
いつもお世話になっております。
環境/PHP5.2.5
<?php
error_reporting(0); //←エラー出力を「完全にオフ」にしているつもり
hoge //←確実にエラーを起こす因子
?>
というソースの場合、
「Parse error: syntax error,~略~」
といったエラーが出力されてしまいます。
error_reporting(0); であっても、
致命的なエラーについては、やはり出力されてしまうのでしょうか?
完全にエラーをオフにする方法を知りたいと思っています。
//-------PHPマニュアル-----------
あなたのコードをプローブから保護するために
error_reporting() を 0 に設定するか、
php.ini のオプション display_errors をオフに設定する、
のいずれかでエラーリポートを完全に無効にすべきです。
//-------------------------------
と、書かれてあるので、
error_reporting(0);にて、 エラー出力を
「完全に無効に」できると思ったのですが…。
No.1ベストアンサー
- 回答日時:
構文エラー(syntax error)は、そのスクリプトを読み込んだ時点でエラーが吐かれてしまいますので、スクリプト中に記述された全ての命令を解釈しないです。
ini_set関数でdisplay_errorsを設定する、error_reporting関数を設定するなどしても、構文エラーは抑止できません。php.iniで設定する必要があります。
こんばんは、hogehogeさん。
アドバイスをありがとうございます。
ini_set()で設定できる内容にも限界がある、
ということをどこかで読んだことがあります。
本件もその1つのケースなのでしょうね。
よって、構文エラーまで出力を抑制したい場合には、
php.iniを直接変更する必要があるわけですね。
教えて頂いたURLに、
「開発をサポートする仕組みであり、本番のシステムでは
使用すべきではありません」
と書かれておりますが、
私が利用しているレンタルサーバ上で、現在、構文エラーが出力されてしまう状態にあるのは、
本来であれば、マズイ状態ということなのでしょうね。
レンタルサーバですので、私個人が、php.iniを直接変更することは
おそらくデキナイと思われます。
なので、error_reporting(0)で抑制できないほどのエラーについては、
本番サイトへアップする前に、ナントカしておく必要がありますね。
(当たり前の話で、恐縮ですが。)
私のように、php.iniを直接変更できない状況において、
出来る限り、エラーを吐かないような設定にするには、、
ただただ、error_reporting(0) を使えば良い、
という理解でよろしいでしょうか?
もっと、エラー抑制強度は上げられますでしょうか?
例えば、
syntax errorは抑制できないけれども、
ini_set()を使えば、もっとエラー抑制が可能である…とか。
もし、ご存知でしたら、ご教授下さい。
よろしくお願い致します。
No.3
- 回答日時:
そこのサーバだったら、.htaccessファイルにPHPの設定を記述できますので、
.htaccessファイルを作成の上、
---------
php_value display_errors 0
---------
と記述してやれば、エラーが表示されなくなります。
ini_setに関しては、その関数の記述を許可していないサーバがあった場合にまったく聞かないので、両方記述しておいたほうが良いかなぁと思います。
レンタルサーバの場合、様々なシバリがある場合がありますので、重複する記述にしておいても良いのではないでしょうか。
ホゲホゲさんは、歩くPHPマニュアルですね。
(普段、78を省略して、黙読してます。)
某サーバの仕様のことも含め、
ほんとに、色々な事をご存知のようですね。
ビックリです。
.htaccessにて、
「php_value display_errors 0」という設定ですね。
分かりました!
この設定にすることで、
「構文エラー」出力をも抑止できてしまうということなんですよね。
なんと強力なんでしょう!
もっとも、そんな状態でアップすることはありませんが。
>レンタルサーバの場合、様々なシバリがある場合がありますので、
>重複する記述にしておいても良いのでは
サーバによっては、セキュリティなどを考慮し、
危なそうな「組み込み関数」を使用不可にしている所もあるようですね。
ただ、そのことから、「重複記述テクニック」は思い浮かびませんでしたが…。
書籍からは学びにくい、実践的な知識だなぁと感じました。
と同時に、技量の差を痛感いたしました。
No.2
- 回答日時:
構文エラーのような致命的なものでなければ、
ini_set('display_errors', 0);
error_reporting(0);
とすれば表示されなくなると思います。
ご利用のサーバがどこなのかは分かりませんが、場所によってはコントロールパネルである程度変更できたりすると思いますが、そういった場所の設定は見てみましたか?
ini_set('display_errors', 0);
と
error_reporting(0);
が等価であれば、後者の方が書きやすいので、
書きやすい方を選択します~^^
(等価でない場合には、ご忠告頂けると嬉しいです。)
php.iniの設定変更について、
サーバで確認しました所、どうやら無理のようです。
質問・要望ページにて、
ユーザから「php.iniの設定を○○に変更して下さい」という
要望が書き込まれていましたので…。
共用サーバのため、php.iniの設定変更が自由ではないのかもしれません。
ちなみに、某XR○○.comという所を利用しています。
こことは別に利用しているサーバ(こちらも共用)では、
不思議と、php.iniファイルを自由にイジレタのですが…。
共用サーバだけど、php.iniは独立しているといった仕様なのでしょうね。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
- その他(パソコン・周辺機器) dvd書き込めない 5 2022/03/22 19:06
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- PHP PHPの構文で間違えが分からない 5 2022/07/11 16:38
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- その他(プログラミング・Web制作) cryptcatのビルド 4 2022/07/21 14:55
- PHP どうして送信されないのでしょうか? 1 2022/12/09 05:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォントの色を変えるには?
-
これは例外処理でしょうか?
-
コードユナイターでPHPのプログ...
-
正規表現での最後尾のバックス...
-
iframeからのアクセスか、ブラ...
-
try~catch構文は、どういうメ...
-
PHPのストアドプロシージャ仕様
-
トランザクションが原因?DBに...
-
PHPでネットワークドライブのop...
-
phpでクラスのメソッドで同名の...
-
パースエラーとは?
-
VB6 テキストとSetfocus
-
bindValueエラー
-
エラーのあるxmlファイルからの...
-
最小公倍数をPHPで求めるには
-
@fileとは
-
phpの imap_search で漢字コード
-
Call to undefined method RDBM...
-
phpでPEAR::DBを使っているので...
-
SELECTの値を保持する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
トランザクションが原因?DBに...
-
PHPでネットワークドライブのop...
-
Localeクラスについて
-
PHPにて外部サイト内容が取得不...
-
PHP8を使うと、大量のWarningが...
-
PHPで、エラーがない場合のみ画...
-
「@$変数」の「@の意味は?」
-
パースエラーとは?
-
require_once で読み込まれたか?
-
PHP.iniの設定に関して
-
SELECTの値を保持する
-
これは例外処理でしょうか?
-
phpのエラー(T_LNUMBER)について
-
ある条件に当てはまったときに...
-
ワードプレスサイト PHP8.0.25...
-
正規表現での最後尾のバックス...
-
PHPでfatal errorが出ても無視...
-
PHPでSMTPを使ってメール送信で...
-
Oracleに接続できません
おすすめ情報