
いつもお世話になっております。
環境/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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでネットワークドライブのop...
-
フォントの色を変えるには?
-
phpでnullのときに0を表示させ...
-
phpでget_headers()が使えない?
-
拡張子PHP3のスクリプトを...
-
phpのheader("Location:#pos")...
-
PHPのif文でその処理を途中で抜...
-
CFileDialogの最初のディレクト...
-
*.php、*.php3、*.phtmlの違い
-
.phpと.incファイルの違いはな...
-
require_once()でファイルが読...
-
ImageCreate関数が undefined f...
-
php4とphp5での数値の取り扱い...
-
Prompt入力値をphp変数として取...
-
header(Location:~)で$_SESS...
-
シェルスクリプトをPHPで動かそ...
-
HPを開くとダウンロードページ...
-
phpのextension_dirを複数指定...
-
【file_exists】ファイルが存在...
-
PHPからlhaコマンドを使いたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
[php初心者]サイトを見てデータ...
-
PHP8を使うと、大量のWarningが...
-
フォントの色を変えるには?
-
PHPで、エラーがない場合のみ画...
-
ワードプレスサイト PHP8.0.25...
-
トランザクションが原因?DBに...
-
PHPでSMTPを使ってメール送信で...
-
「@$変数」の「@の意味は?」
-
あらゆる例外に対応できるエラ...
-
PHPでネットワークドライブのop...
-
正規表現での最後尾のバックス...
-
phpのIF条件分岐で、代入する値...
-
qmailによるメールの受信について
-
PHPにて外部サイト内容が取得不...
-
phpでこの記述をもっと簡単に書...
-
bindValueエラー
-
Bootstrap3 と Faundation5 を...
-
PHPエラーチェック:ローカルで...
-
PHPでfatal errorが出ても無視...
-
AptanaStudioでASP形式のPHPシ...
おすすめ情報