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

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

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

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

Q&A

3回答

1471閲覧

PHP Deprecated のエラーで画面が真っ白になる根本原因

avantgarden

総合スコア121

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

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

0グッド

0クリップ

投稿2021/11/17 14:52

編集2022/01/12 10:55

Apache + php-fpm7.4の環境です。

とあるページにアクセスすると、PHP Deprecatedのエラーが多く発生します。
このこと自体が原因でPHPの処理が中断されることはないのですが、画面が真っ白になります。

error_logを確認すると、エラーの出力が途中で止まっていました。

一方、同じページで同一キーのgetパラメータの数値(曜日を表す数値)を変更すると、真っ白になることなページは表示されます。(display_errorsはoffにしています)この場合、error_logでは、真っ白になる場合と同じところでエラー出力は一旦途切れているのですが、その直後(ログ表記上で同一時刻)に、同じスレッドIDで、続きと思われるようなエラー出力が行われていました。

  • 真っ白になる場合
[Wed Nov 17 23:11:31.880429 2021] [proxy_fcgi:error] [pid 1848357:tid 139775197566720] AH01071: Got error 'PHP message: PHP Deprecated: Function get_magic_quotes_gpc() is … … PHP message: PHP Deprecated: Function get ←ここで途切れている
  • 真っ白にならない場合
[Wed Nov 17 23:11:31.880429 2021] [proxy_fcgi:error] [pid 1848357:tid 139775197566720] AH01071: Got error 'PHP message: PHP Deprecated: Function get_magic_quotes_gpc() is … … PHP message: PHP Deprecated: Function get ←ここで途切れているが、 [Wed Nov 17 23:11:31.913905 2021] [proxy_fcgi:error] [pid 1848357:tid 139775197566720] AH01071: Got error 'sage: PHP Deprecated: ←続きのような出力が行わている … … message: PHP Deprecated: … … on line 1234' ←出力が完了している

私にとっては初めてみた事象になるなのですが、エラー出力が中断されたために画面が真っ白になったという認識で合っているでしょうか。その場合、エラー出力の中断によってなぜ画面が真っ白という症状が起きるのでしょうか。

また、エラー出力が中断される理由を教えていただきたいです。

※PHP Deprecatedのエラー自体はもちろん解消させますが、この事象の根本的なところが分からないので質問させていただきました。

【追記】
E_DEPLICATEDを画面表示されるように変更すると、画面が真っ白の現象は起こらず、エラーとコンテンツが表示されました。(その際のerror_logとページ上のログの様子を詳細には見ていなかったので、確認してみます)

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

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

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

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

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

guest

回答3

0

根本的原因は、「get_magic_quotes_gpc()」なんてチェックしている古いコードを無理に動かしていることです。作り直した方が良いですよ。


現象とログの紐づけがうまくできていないようなので、切り分けのためにエラーの画面表示の抑止を解除してエラーを画面に吐かせると良いです。

投稿2021/11/17 21:11

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

avantgarden

2021/11/17 23:52

元がレガシーなシステムで、ご指摘のことはその通りだと思っております。 エラーの画面表示についてですが、本文に記載し忘れていたのですが、E_DEPLICATEDを画面表示させると、画面真っ白にはなりませんでした。本文にも追記しておきます。(その際のerror_logと画面上のログの様子を詳細には見ていなかったので確認してみます)
退会済みユーザー

退会済みユーザー

2021/11/18 00:52 編集

E_DEPRECATED では処理は止まらないはずなので、画面に出せば必要なエラーが紐づけ出来ると思ったのですがダメだったってことですかね? error_reporting から E_DEPRECATED をはずすと、ホントに必要なログが取れるかもしれません。
guest

0

php.iniのlog-errors-max-len設定でしょうか?
ini_getかphpinfo()で確認いただけますか?

投稿2021/11/18 00:41

skys215

総合スコア910

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

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

avantgarden

2021/11/18 00:57 編集

phpinfo()で確認したところ、1024でした。 ここの数値に変更を加えたことはないので、デフォルトのままだと思います。
guest

0

E_DEPRECATED は非推奨関数(将来削除される可能性が高いもの)への警告で、中断することはなさそうですが、チラッとログに書かれているその
get_magic_quotes_gpc()という機能はPHP 7.4.0 で 非推奨 になり、PHP 8.0.0 で 削除 されましたとのことなので、そういうことかと。
(PHPマニュアル確認すれば機能のことは書いてあるのでまずはPHPマニュアル確認しましょう)

投稿2021/11/17 21:09

m.ts10806

総合スコア80765

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

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

avantgarden

2021/11/17 23:48

エラーの内容は理解おり、文末にも記載しておりますが、この関数は削除してエラーが出ないようにはします。非推奨関数が残っていること自体がよくないのですが、エラー出力の中断と、画面が真っ白になる理由がわからず釈然としないので、その根本的なところを知りたいというのが質問の趣旨になります。
m.ts10806

2021/11/18 00:39

エラー出力のレベルでしょうけど、あとは実装次第なところもあります。エラーやログだけ見てもなんとも言えませんし問題切り分けも難しいです。 非推奨関数を改修するのが優先と思います。それで現象が発生しなくなるなら原因はそこですし、そうでないなら別の場所に原因があるということになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問