本文へ移動
目次
トラブルシューティング

PHP拡張機能と設定

機械翻訳です。英語の原文もご利用いただけます。

KapsuleHost webホスティングがWordPress、WooCommerce、PHPサイト向けに提供しているPHPバージョンと拡張機能、お客様自身で変更できる設定、そして変更の反映に最大5分かかる理由について説明します。

静的サイト、Node.js、Pythonのサイトは PHP を実行しません。サイトに関するPHPのすべては一か所にまとまっています。ウェブサイトから該当サイトをクリックし、設定、続いてPHPを開いてください。このページにはバージョン選択、変更可能な設定、Composerの実行機能、PHPエラーログがあります。

KPanelにおけるサイトのPHPページ。バージョン選択と変更可能な設定が表示されている

PHPバージョンの選択

選択できるバージョンは4つです。8.4、8.3、8.2、8.1。新規サイトのデフォルトは8.3です。

ご利用のソフトウェアが実際にサポートしている最新のバージョンを選んでください。新しいPHPは体感できるほど高速で、セキュリティ修正の提供期間も長くなります。すぐに最新版へ飛びつかない方がよい理由は互換性です。古いプラグインや何年も前に書かれたカスタムコードは、テストされたことのないバージョンでは完全に動作しなくなる場合があります。

変更するには、バージョンを選択してバージョンを適用をクリックします。変更は即座に反映され、お客様側での再起動は不要で、ダウンタイムも発生しません。

PHPバージョンの変更はまずステージング環境で行い、サイトを実際に操作して確認してから本番環境に適用してください。やむを得ず本番で直接変更する場合は、ご自身で状況を確認できるタイミングで行ってください。元に戻すのもワンクリックでできます。ステージング環境をご覧ください。

バージョン変更でサイトが壊れた場合は、前のバージョンに戻してログを確認してください。エラーには実行できなかったファイル名が記載されます。PHPバージョンの変更およびエラーログをご覧ください。

変更可能な設定

PHPページでは5つの設定がドロップダウンとして表示されます。これらは実際にトラブルの原因となることが多いため、表に出されています。

設定デフォルト選択可能な値制御する内容
memory_limit256M128M, 256M, 512M, 1024M, 2048M1つのリクエストが使用できるメモリ量
max_execution_time3030, 60, 120, 300, 6001つのリクエストが実行できる秒数
upload_max_filesize64M16M, 32M, 64M, 128M, 256Mアップロードできる単一ファイルの最大サイズ
post_max_size65M17M, 33M, 65M, 129M, 257Mフォーム送信全体の最大サイズ
max_input_vars30001000, 3000, 5000, 100001回の送信に含められるフィールド数

どれを調整すべきか:

  • 一定サイズを超えるとアップロードが失敗する場合: upload_max_filesizeを上げてください。あわせてpost_max_sizeも上げてください。
  • 大きなフォームやページビルダーが保存時にフィールドを失う場合: max_input_varsを上げてください。これはエラーが出ないため非常にわかりにくく、厄介な問題です。超過したフィールドは静かに破棄されます。
  • ページが途中で止まりエラーも出ない場合: memory_limitを上げてください。WordPressのメモリ制限をご覧ください。
  • 長時間のインポートやエクスポートがタイムアウトする場合: max_execution_timeを上げ、コマンドラインからジョブを実行することも検討してください。WP-CLIをご覧ください。

post_max_sizeはupload_max_filesizeより大きい値である必要があります。アップロードされたファイルは投稿データの一部として送信されるためです。この条件を満たさない組み合わせを選択した場合、プラットフォームがpost_max_sizeを自動的に引き上げます。選んでいない値が表示されるのはこのためです。

変更の反映に最大5分かかる理由

このページで最もよくある混乱の原因なので、正確に説明しておきます。

設定内容はサイトのドキュメントルートにある.user.iniファイルに書き込まれます。PHPはこのファイルを読み込んだ後、300秒間(5分間)キャッシュします。このキャッシュが切れるまで、PHPは以前の値を使い続けます。

そのため、変更を保存した後は:

  • ページには最大5分間、以前の制限値が表示され続けます。
  • phpinfo()も最大5分間、以前の制限値を表示し続けます。
  • 強制リフレッシュをしても効果はありません。ブラウザのキャッシュを消去しても同様です。
  • 何かを再起動する必要はなく、そもそも再起動はできません。そのまま待ってください。

5分以上経過しても値が変わらない場合は、実際に問題が発生している可能性があるため、サポートチケットを開くことをおすすめします。

.user.iniをご自身で編集する

パネルが公開していないディレクティブが必要な場合などは、SFTPまたはSSH経由で.user.iniを直接編集することもできます。このファイルはサイトのドキュメントルートにあります。SFTPアクセスをご覧ください。

フォーマットは1行につき1つのディレクティブです:

memory_limit = 512M
max_execution_time = 120

.user.iniにできることには2つの重要な制限があります。

ディレクトリ単位、またはユーザー単位での設定がPHPで許可されているディレクティブに対してのみ機能します。 上記の5つはすべてこれに該当します。disable_functionsや、extension=による拡張機能の読み込みなど、システムレベルでしか設定できないディレクティブは、.user.iniファイル内では無視されます。エラーにはならず、単に何も起こらないため、原因究明に丸一日費やしてしまう方もいます。

パネルが読み込んで表示するのは単純なキーのみです。 opcache.enableやdate.timezoneのようにドット(.)を含むディレクティブはPHPによって正しく処理されますが、パネルのフォームには表示されません。手動で設定した後にパネル経由で何かを変更した場合は、後でファイルの内容を確認してください。

KapsuleHost webホスティングはApacheではなくnginxで動作しています。.htaccessファイルは誰にも読み込まれません。.htaccessファイルに記述したPHPディレクティブ(php_value memory_limitなど)は、ここではまったく機能しません。代わりに.user.iniかパネルをご利用ください。WordPressと.htaccessをご覧ください。

利用可能な拡張機能

標準ビルドは幅広く、WordPress、WooCommerce、そしてほとんどのPHPアプリケーションが必要とする機能をすべて含んでいます。

データベース: mysqli、pdo_mysql、sqlite3、pdo_sqlite 画像: gd、imagick、exif キャッシュ: Zend OPcache、redis、memcached テキストとロケール: mbstring、iconv、intl、gettext、ctype XMLとデータ: dom、simplexml、xml、xmlreader、xmlwriter、xsl、json ネットワーク: curl、soap、sockets、ftp、openssl 数学と暗号: bcmath、sodium、hash、random ファイルとシステム: fileinfo、zip、zlib、phar、posix、pcntl、shmop、calendar、tokenizer

知っておく価値のあるバージョン差異が1つあります。imap拡張機能は8.3以前には存在しますが、8.4には存在しません。これはPHP本体からこのリリースで削除されたためです。これを必要とするアプリケーションをお使いの場合は、8.3にとどまるか、そのアプリケーションを最新のメールライブラリへ移行してください。

インストールされていないもの: PostgreSQLドライバー、MongoDB、Xdebug、mcrypt、そしてionCubeやSourceGuardianなどの商用コードローダー。

パネルからご自身で拡張機能を有効化・無効化することはできません。お使いのアプリケーションが一覧にないものを必要とする場合は、チケットを開いて実行環境についてご説明ください。追加できるかどうかは拡張機能によって異なります。サポートチケットの開き方をご覧ください。

実際に読み込まれている内容を確認する

推測に頼らず確認する方法です:

  • WordPressの場合: Tools、Site Health、Info、Serverの順に進みます。PHPバージョンと関連する制限値が一覧表示されます。
  • SSH経由の場合: バージョン確認にはphp -v、読み込まれている拡張機能の確認にはphp -mを使用します。SSH鍵の追加をご覧ください。

phpinfo()ファイルをWebルートに置いたままにしないでください。これはお客様のパス、拡張機能、設定内容を見つけた人全員に公開してしまい、自動化されたスキャナーもまさにこのファイル名を狙って探します。何かを確認するために作成した場合は、確認後すぐに削除してください。

関連ガイド

この記事は役に立ちましたか?

AI の方へ:このページを Markdown で読む

関連記事

ウェブサイトが表示されない場合:診断チェックリスト以下の手順を順番に進めてください。各ステップで原因を特定するか、その可能性を除外できます。ほとんどの問題はステップ5までに解決します。…サイトがダウンしたとき: 表示内容から原因を特定するこれは、読み込めないサイトのための、製品をまたいだ切り分けの手順です。KapsuleHost は複数の製品を提供しており、原因を最も早く見つける方法は、どの製品が悪いのかを推測…KapsuleHostで Cloudflare または別のプロキシを使用するCloudflareや別のプロキシをKapsuleHostで使用する方法 KapsuleHostサイトの前に第三者のプロキシまたはCDNを配置する方法、サイトを破壊する2つの設定、プロキシしてはいけ…サイトの遅延とリソース上限ホスティングプランが実際に何を制限しているのか、それぞれの上限に達したときに何が起きるのか、そして遅いサイトの原因がリソースの問題なのかコードの問題なのかを見分ける…

解決しませんでしたか?

お客様のアカウントを把握している Kora にご質問いただくか、サポートチームにお問い合わせください。

お問い合わせサポートにメール