PHP

PHP (PHP: Hypertext Preprocessor) は、インターネット上で人気のあるプログラミング言語です。PHPは、WordPressのような動的コンテンツを、ウェブブラウザが読み取れるHTML、CSS、JavaScriptに変換します。WordPressは主にPHPで書かれており、WordPressを実行するためにはサーバーにPHPが必要です。

PHPはインタープリタ型の言語であるため、そのバージョンと設定は、WordPressがどれだけうまく動作するかに大きな影響を与えます。

Version

可能であれば、WordPressを実行するためにPHP 7.4以上を使用するべきです。この文書の執筆時点では、PHP 7.4がWordPressの公式サポートバージョンであり、PHP 8.0および8.1は「例外付きの互換性」があり、PHP 8.2は「ベータサポート」にあります。PHP 8は、現在もアクティブな開発とサポートを受けている唯一の主要なPHPバージョンです。PHPグループは、古いバージョンのPHPのサポートを定期的に終了し、古いバージョンはセキュリティ上の懸念から更新されることは保証されていません。

同時に、新しいバージョンのPHPにはセキュリティとパフォーマンスの改善が含まれており、新機能やバグ修正も伴いますが、これらは後方互換性があるとは限りません。しかし、PHPのバージョンをアップグレードする際には、極めて注意が必要です。WordPressは最新のPHPリリースと互換性がありますが、古いバージョンのPHPを使用するように構築されたサイトは、含まれているプラグインやテーマのために互換性がない可能性があります。

PHP 8へのアップグレードがすぐに不可能な場合は、できるだけ早くPHP 7.4へのアップグレードを行うべきです。WordPressは古いバージョンのPHPで動作する可能性がありますが、これらのバージョンは公式のサポート終了に達しており、古いPHPインストールを実行することはセキュリティの脆弱性にさらされる可能性があります

どのPHPバージョンがあなたのWordPressバージョンと互換性があるかは、PHPの互換性とWordPressバージョンページで確認できます。

PHPのサポートバージョンに関する詳細情報は、常にPHPのサポートバージョンページで見つけることができます。

PHPをアップグレードする際には、アップグレード前にサイトの互換性をテストすることが良い習慣です。ステージング環境と本番環境など、複数の環境を提供する場合、PHPのバージョンは各環境ごとに別々に設定可能であるべきです。これにより、ユーザーは非本番環境で新しいPHPバージョンをテストし、PHPバージョンを本番環境でアップグレードする前に問題を解決できます。

一般的な互換性チェックを行うための便利なWP-CLIコマンドがありますが、100%正確ではないことに注意してください。

Configuration

PHPは主に設定ファイル、php.iniを使用して構成され、PHPは実行時にすべての設定と構成を読み取ります。これは通常、CGI/FastCGIまたはPHP-FPMのようなプロセスマネージャを介して行われます。

一部のサーバー環境では、.htaccess.user.iniファイルのような他のファイルを使用してPHPの設定をカスタマイズできる場合があります。

これらのディレクティブの詳細情報は、公式PHPドキュメントで確認できます。

Timeouts

システムには、リクエストの異なる側面を制限するいくつかのタイムアウト設定があります。タイムアウトを設定する際には、相互にうまく機能する値を選択することが重要です。たとえば、PHPサービスのスクリプト実行タイムアウトが非常に高い場合でも、ウェブサーバー(例:Apache)のタイムアウトがそれより低い場合は意味がありません。この場合、リクエストが長くかかると、PHPのタイムアウト設定に関係なく、ウェブサーバーによって終了されます。

プロセスはサーバーの負荷に応じて異なる時間を要することに注意してください。これらの制限は、サーバーが適切に機能することを保証するために設けられています。サーバーの負荷が高い場合、プロセスが完了するまでに時間がかかることがあり、これがさらなるサーバー負荷を引き起こすカスケード効果を引き起こす可能性があります。したがって、スクリプトがコンパイルされるのに十分な時間を与え、通常のサーバー負荷内に収まるようにすることのバランスが重要です。

主なPHPタイムアウトは、max_execution_time php.iniディレクティブで設定できます。これはコードの実行を制限し、システムライブラリ呼び出しやMySQLクエリには適用されませんが、Windowsでは適用されます。

ウェブサーバーからPHPへのデータ転送に許可される最大時間は、max_input_time php.iniディレクティブで指定されます。これは通常、ファイルのアップロードに許可される時間を制限するために使用されます。この時間はmax_execution_timeとは別であり、ウェブサーバーがPHPを呼び出してから実行が開始されるまでの時間を定義します。

これらのタイムアウトは通常、サーバーごとに設定されており、共有ホスティングアカウントにいる場合は変更できないことに注意してください。最良のアプローチは、ホスティング会社のテクニカルサポートに連絡し、ニーズに合わせて変更できるかどうかを確認することです。

Memory Limits

PHPがページレンダリングごとに使用できる最大メモリ量は、memory limit php.iniディレクティブで指定されます。

PHP内でメモリ制限を設定することに加えて、WordPressにはwp-config.phpファイルで変更できる2つのメモリ構成定数があります。WordPressは、許可があればPHP memory_limitをこれらの値に引き上げますが、php.iniがより高い値を指定している場合、WordPressは許可される量を下げることはありません。

オプションWP_MEMORY_LIMITは、WordPressがウェブサイトのフロントエンドをレンダリングするために要求すべきメモリ量を宣言します。WordPressのデフォルトは40 MBで、WordPress MultiSiteのデフォルトは64 MBです。

  1. define( 'WP_MEMORY_LIMIT', '128M' );

オプションWP_MAX_MEMORY_LIMITは、WordPressがウェブサイトのバックエンドをレンダリングするために要求すべきメモリ量を宣言します。WordPressのデフォルトは256 MBです。

  1. define( 'WP_MAX_MEMORY_LIMIT', '256M' );

WordPressのバックエンドは通常、より多くのメモリを必要とするため、ログインユーザー用に設定できる別の設定があります。これは主にメディアのアップロードに必要です。バックエンドが必要とするすべてのリソースを確保するために、フロントエンドの制限よりも高く設定することができます。通常、WP_MEMORY_LIMIT <= WP_MAX_MEMORY_LIMITです。

File Upload Sizes

WordPressの管理ダッシュボードを使用してメディアファイルやその他のコンテンツをWordPressにアップロードする際、WordPressはPHPを使用してアップロードを処理します。PHPの設定には、PHPを介してアップロードできるファイルのサイズや、処理のためにウェブサーバーに送信できるリクエストのサイズに制限が含まれています。これらは、上記で説明したサーバーのタイムアウトと一致する必要があります。

個々のファイルアップロードのサイズ制限は、upload_max_filesize php.iniディレクティブを使用して設定できます。

ウェブサーバーからPHPに送信されるリクエスト全体のサイズ制限は、post_max_size php.iniディレクティブを使用して設定できます。post_max_sizeの値は、upload_max_filesizeの値以上でなければなりません。PHPは、post_max_sizeの値よりも大きいサイズのリクエストを処理しません。

post_max_sizeはすべてのPHPリクエストに適用され、アップロードだけでなく、リクエストに含まれる他の大量のデータを処理する場合には、別途対処することが重要になる可能性があります。

共有ホスティングアカウントでは、これらの制限は通常サーバーレベルで設定されており、変更したり、特定の値を超えて増加させたりできないことに留意してください。さらに、異なるセットアップには、上記の値を変更するための異なる方法があります。その件については、ホスティング会社のテクニカルサポートに連絡して追加の支援を求めてください。

Replacing WordPress’ Cron Triggers

wp-cron.phpスクリプトは、特定のタスクを自動的にスケジュールして実行する役割を担っています。誰かがあなたのウェブサイトを訪れるたびに、wp-cron.phpはジョブを実行する時間かどうかを確認します。これらのチェックは小さくて迅速ですが、時間を消費し、負荷を生じさせます。このため、DISABLE_WP_CRON定数を設定し、WordPressのcronシステムをトリガーするための代替手段を使用することを検討する価値があります。ただし、WordPressのcronシステムはパフォーマンスを考慮して設計されており、動作に必要なリソースは最小限であるため、本当に必要でない限り、置き換える必要はありません。

Changelog

  • 2023-06-08: 新しいページが作成されました。