php.iniの設定変更ができないレンサバなどでPHPの設定変更 | クズリーマンのカス備忘録

php.iniの設定変更ができないレンサバなどでPHPの設定変更

php-logo php
スポンサーリンク

phpの設定を変えたいけど、使用するレンタルサーバでphp.iniがいじれないというときの、対処法。

phpの設定ができる場所。

PHP: どこで設定を行うのか - Manual

phpの設定はphp.iniでするもんだと思ってたが、いろんなところで設定できる。

phpの設定ができる場所は以下のとおり。

設定できる箇所:
– php.ini、httpd.conf
– 上記に加え、.htacess、.user.ini
– .user.ini、ini_set()関数、Windowsのレジストリ
– どこからでも指定可能

表にすると、以下の感じ

モード php.ini httpd.conf .htaccess .user.ini ini_set() Windowsのレジストリ
PHP_INI_SYSTEM o o
PHP_INI_PERDIR o o o o
PHP_INI_USER o o o
PHP_INI_ALL o o o o o o

どのPHP設定がどこから設定可能か?

PHP: コア php.ini ディレクティブに関する説明 - Manual

ここからディレクティブを探して、

上記の表と照らし合わせるとわかる。

ss

たとえば、

「short_open_tag」設定については、
「PHP_INI_PERDIR」となっているので、

  • php.ini
  • httpd.conf
  • .htaccess
  • .user.ini

からの設定が可能。

.htaccess にphpの設定できるのは、module版PHPのみ。

.htaccess にphpの設定ができるのは、基本的にはモジュール版のPHPのみ。

(PHP_VALUE環境変数で設定できるみたいだけど、あんまスマートじゃなさそう)(R]

使用しているPHPが、モジュール版か、CGI版(php-fpmなど)版か

使用しているPHPが、モジュール版か、CGI版(php-fpmなど)版か確認するには、

phpinfo()で確認して、

Server APIの部分が、「Apache 2.0 Handlerならmodule版
「CGI/FastCGI」ならCGI版です。

https://chariosan.com/2019/11/24/apache_module_cgi/

.user.ini ファイルについて

PHP: .user.ini ファイル - Manual

ディレクトリ単位でのPHP設定が可能。

サイト全体に効かせたい場合は、WebサーバのDocumentRoot直下に設置する。

/.user.ini

書き方はphp.iniと同じで、例えば「」のような「ショートタグ」を有効にしたい場合は、

short_open_tag = On

と記述する。

.user.ini ファイルは反映に時間がかかる。

.user.ini ファイルの注意点として、

反映までに時間がかかる

デフォルトは300秒(=5分)に設定されてるが、phpinfo()などで対象サーバが反映まで何分待ちかがわかる。

user_ini.cache_ttl

の値がそれ。300になってたら、300秒待ち。

サービスを再起動すれば即反映される。

コメント

タイトルとURLをコピーしました