質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

9112閲覧

php.ini の変更内容が apache 再起動なしで反映されている

pectin

総合スコア95

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2021/07/12 20:38

編集2021/07/12 20:40

php.ini の変更内容が apache 再起動なしで反映されていました

php.ini の max_file_uploads を変更しました。

php.ini 変更時は、いつも apache graceful で設定内容を反映しています、apache graceful などを実行する前に phpinfo -i で確認すると、設定値がすでに変更された値で表示されていました。

例)
2M → 10M に変更した場合
max_file_uploads => 10 => 10
と、更新されている

反映前は 2 と表示されると思っていましたが、これは正しい動作なのでしょうか。

もし正しい場合、

  • php.ini の変更内容は apache の再起動なしで反映される
  • 再起動前でも phpinfo -i での結果は変更後の数値で表示されるが、実際には apache 再起動が必要

のどちらの状態かを知りたいです。

また、後者の場合、反映前と後の区別がつかないので、反映状態を知る方法も知りたいです。

本来は apache 再起動が必要だが、特定の条件に当てはまる場合は、再起動なしでも更新が反映される場合、その詳細が知りたいです。

詳しい方がいらっしゃいましたら、教えていただけますでしょうか。

よろしくお願いします。

補足情報

サーバは AWS Amazon Linux2 です。
いつもは、apache graceful と systemctl restart php-fpm.service で php-fpm.d も再起動しています。

稼働している各アプリケーションのバージョンは、以下の通りです。
PHP は php-fpm で稼働させています。

PHP 7.3.26 (cli)
PHP 7.3.16 (fpm-fcgi)
Apache/2.4.46

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/07/12 20:48

PHPからの実行時はどうでしょうか。
m.ts10806

2021/07/12 20:59

一番簡単な方法は文法エラーとなる記述をすることです。 phpinfo -i でエラーとなって PHPからphpinfo()が実行できなければ 仮説は成り立ち 後者が実行できれば「PHPから実行時は再起動後のphp.iniが有効」となります(文法エラーなら再起動できないと思いますが)
pectin

2021/07/13 01:11

php -i でも、phpinfo() を実行した結果でも、どちらも更新後の値で表示されました。
m.ts10806

2021/07/13 01:17

では現在ついてる回答のとおりですね。
guest

回答2

0

ベストアンサー

php.ini の変更内容は apache の再起動なしで反映される

これは正しいです
理由は質問に記載されている情報の下記の部分です

PHP は php-fpm で稼働させています。

ただし何もしないで反映されている訳ではなく、php-fpmのrestartをしているはずです

そして

再起動前でも phpinfo -i での結果は変更後の数値で表示されるが、実際には apache 再起動が必要

これは前述の理由でapacheは関係ありませんが、php-fpmをrestartしていない場合はcliでphpを実行しているか、php-fpmでphpを実行した結果かによります
再起動して入ればiniは反映されるので同じ数値が表示されるのが正しいです

本来は apache 再起動が必要だが、特定の条件に当てはまる場合は、

本来再起動が必要な訳ではなく、mod_phpを利用している場合に限り再起動しなくては反映されないという考え方が正しいです

投稿2021/07/12 23:00

hentaiman

総合スコア6428

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pectin

2021/07/13 01:18

詳細なご説明ありがとうございます。 mod_php の場合は、apache の再起動が必要で、fcgi 形式で動いている場合は、php-fpm の再起動が必要という違いに気が付きませんでした。 > これは前述の理由でapacheは関係ありませんが、php-fpmをrestartしていない場合はcliでphpを実行しているか、php-fpmでphpを実行した結果かによります 今回質問したケースもそうですが、php.ini 変更後に、apache と php-fpm の再起動なしに php -i でも phpinfo() が書いてある PHP ファイルを php コマンドで実行、または、ブラウザで表示の 3 通り試しましたが、どのケースも変更後の 20 となっていました。 ここからは私の予想ですが、php-fpm を restart することなく php.ini に記述した内容は即時反映されるということはないでしょうか? それであれば現状と辻褄があうのですが、他に理由があるのであれば、教えていただけると助かります。
hentaiman

2021/07/13 11:43

いや予想で言われても 予想が正しい事の辻褄合わせをしたいってのは調べるに当たって考え方が正反対です
pectin

2021/07/20 01:37

コメントをいただいているのに通知が来ず、お返事が遅くなりました。 予想が正しいかの辻褄合わせというか、正しいか間違いかを知りたかったのですが、うまく伝わっていなかったらすみません。(これも同じですという場合もすみません) 予想をしていても仕方がないので、実際に動かしてみて確認したところ、「設定値は変わるものの実際には反映されていない」が結果でした。 怖いのが設定値を変更し、php-fpm 再起動を忘れてしまうと、表面上は設定値が変わっているのに実際反映されていない状態ができることですが、こればかりは設定変更と php-fpm 再起動をセットで実施することを忘れないようにするしかなさそうです。 一番わかりやすい説明でしたのでベストアンサーをつけさせていただきます。 疑問も晴れて助かりました。 改めてありがとうございました。
guest

0

本来は apache 再起動が必要だが、特定の条件に当てはまる場合は、再起動なしでも更新が反映される場合、その詳細が知りたいです。

ちょっと発生している事象と再現条件が把握しきれていないのですが、
CLIからPHPを実行した場合は毎回最新のphp.iniの内容が反映されます。
これはmod_phpやphp-fpmを経由することなくPHPが実行されるためです。

投稿2021/07/13 07:49

tanat

総合スコア18778

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pectin

2021/07/13 07:57

情報ありがとうございます。 私がこのあたりを正しく理解をしておらず、 ・CLI 実行時は常時最新の php.ini で実行される ・mod_php の場合は apache の再起動が必要 ・php-fpm の場合は apache の再起動は不要で、php-fpm の再起動が必要 と言うことが、今回の件で理解ができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問