[PHP]エラー表示を.htaccessで行うの巻

スポンサーリンク

.htaccessにてPHPのエラーをブラウザに出力する

PHPのエラーって厄介ですよね。ブラウザから見ると真っ白な画面で何も表示されないことはしばしば。サーバー上からの操作でphp -lを使ってSyntaxチェックできるのであればいいのですが。。 もしくは、Apacheのエラーログを見るのもいいのですが、開発者が多い場合エラーログがたくさん出てくるし、そもそもサーバー操作できないユーザーには真っ白な画面が表示されるだけでエラーの内容がまったくわかりません。そこで今回は、PHPのエラー内容を直接ブラウザに表示する方法を調べたところ「.htaccess」ファイルで実現できることがわかりました

「.htacess」ファイルに以下の1行を記述し、PHPのエラーを表示させたいディレクトリに設置します。

php_flag display_errors on

上記の設定を「.htaccess」ファイルで利用する場合には、Apacheの設定にて該当のディレクトリの「AllowOverride」にて「Options」が有効になっている必要があります

<Directory /path/to/dir/>
 AllowOverride Options
</Directory>

もし「Options」が有効になっていない場合「500 Internal Server Error」になり、Apacheのエラーログには以下のとおり表示されます。その場合はApacheの設定変更が必須となります。

.htaccess: php_flag not allowed here

他の方法として

.htaccessファイル以外を利用する方法として、php.iniファイルを直接変更する方法があります。php.iniを変更する方法ですと同じサーバ内で動いている全てのPHPにてエラー表示がされるようになります。エラー表示が行われてほしくない本番環境と開発環境が同じサーバー上にある場合など、.htaccessファイルによる制限は便利だと思いました。

以上

 

コメント

  1. くりくり より:

    今晩は
    php -l これで文法チェックできるんですか?
    man phpをしらべると
    –syntax-check
    -l Syntax check only (lint)

    ためしにやってみると
    [root@www public_html]# php -l wp-activate.php
    No syntax errors detected in wp-activate.php

    なるほどこれは楽でいい。

    デバックは全部エラーログでやってました。
    php-fpmはwww-error.logでしたけどね。
    ずっとエラーログを見ていて出力されないから
    おかしいおかしいと・・・。

  2. trippyboy より:

    こんばんは!

    いやー久々にためになる情報でよかったです\(^o^)/

    php-fpmのログもApacheのエラーログに吐き出しちゃうというのもいいかもしれませんが、virtual hostしてたりすると厄介ですね(汗 とにかく自分も忘れがちなんで気をつけないとです(^o^;)

  3. くりくり より:

    おはようございます。

    phpやってるんですが、本当助かりました。
    参考書なんかではwindowsでapache、mysql,phpmyadminにxamppを
    phpを編集するのに秀丸でとかかいてありましたがlinuxやってますから
    viコマンド用のウィンドウにログ出力用のウィンドウにブラウザのチェックですからね。
    デバックするだけでも大変です。
    ならhtmlも構文チェックがあるのかな???
    とネットで調べるとチェックできるサイトがあるぽいことはわかりました。

  4. trippyboy より:

    おはようございます

    もともとperlのsyntax checkが「perl -c」でできるのを知っていたので、「phpでも出来るっしょ」と思ったのがきっかけです。

    私もvimのカラーリングが好きで、vimでやってます。そうそう、最近Notepad++というWindowsでも同様に色付けなどが自動で行われるエディタを見つけまして、Windowsユーザーにはおすすめです。

    htmlのsyntax checkには「tidy」というコマンドがあるようなので、私はまだ使ったことないのですが、試してみてください(*^_^*)

  5. くりくり より:

    おはようございます。
    さっそく、baseにあったのでインストール
    Installing : libtidy-0.99.0-19.20070615.1.el6.x86_64
    Installing : tidy-0.99.0-19.20070615.1.el6.x86_64

    しかし、man tidyをやるとオプションの数がえらくありますね。
    使い方を紹介してるサイトがありましたので
    これでやっていきます。
    http://www.w3.org/People/asada/tidy/

    >私もvimのカラーリングが好きで、vimでやってます。
    前任の管理者もwindowsにvimいれてhtmlをかいてました。
    他の人はDreamWeaverとか専門ソフトをつかってましたけど

    さて、お話は変わるんですがサイト表示の高速化にとりくんでいます。
    mod_deflateで圧縮しておくるのはいいのですが、phpは?
    とあるサイトにいくとzlib関数を使え見たいことが書いてあったんですけど
    phpinfoをみるとbzip2が有効になっています。

    有効にする意味があるのかな?と迷っています。

  6. くりくり より:

    なんどもすいません。

    >有効にする意味があるのかな?と迷っています。
    自己解決しました。

    http://jp2.php.net/manual/ja/zlib.configuration.php#ini.zlib.output-compression

  7. trippyboy より:

    こんにちは!

    なんだか、解決されたようでよかったです(^^)
    私はnginxとphp-fpmで構成してるので、php側での圧縮設定は考えたことありませんでした。
    このような構成でも、考えて実行したほうが、動作改善されるものでしょうか。

  8. くりくり より:

    おはようございます。
    GTmetrixで最初Fでしたが、Page Speed Grade(google評価)
    nginxのgzip設定とブラウザキャッシュを有効にしてみました。
    Aになりました。最初Fでショック。みんな最新のnginx php-fpm opcacheでFですから。

  9. trippyboy より:

    こんにちは

    私はnginxにpagespeedのモジュールを組み込んで利用してます。

    [nginx] ngx_pagespeedを使えるようにコンパイルしてみたの巻

    あとは、gzip.confっていうファイルをincludeして使っています。

    gzip on;
    gzip_http_version 1.0;
    gzip_types text/plain
    text/xml
    text/css
    application/xml
    application/xhtml+xml
    application/rss+xml
    application/atom_xml
    application/javascript
    application/x-javascript
    application/x-httpd-php;
    gzip_disable “msie6”;
    gzip_comp_level 1;
    gzip_vary on;
    gzip_buffers 120 4k;
    gzip_min_length 1100;

    私は http://www.webpagetest.org/ を使って確認してました。

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