画面への表示を指定する。完成したらini_set('display_errors',0);にするか、削除する。ログの出力先を変更する。はじめに「ローカルネットでノートPCをウェブサーバーに」の条件のサーバーで作業します。Ubuntu18.04で検証しています。サーバーのIPアドレスは192.168.1.10と仮定します。ウェブサーバーはapache2(2.4.29)、php7.2です。エラー表示とログプログラムの作成中に、書き間違いがあったときにはエラーが出て知らせてくれます。ところが、PHPのデフォルトでは画面には何も出ません。場合によってはブラウザのページが真っ白で、どこが違っていたのか見当を付けることさえできなくなります。エラーは、apache2のログにも記録されますが、管理者権限がなければ見ることができません。ブラウザの画面は、プログラム作成者だけでなく閲覧者も見ますから、開発時には表示するようにして、完成したら出さないようにしなければなりません。ログについても開発者の所属グループを工夫してログは見えるようにすれば良いのです。他、各ページに置くコマンド(ini_set()など)が使えます。今回は使用状況を考えて、メリットもデメリットもありますが、コマンドで行います。ログの出力先display_errorsページ上にエラーを表示するかの選択。'On','Off'で指定します。デフォルトは当然「表示しない」になっています。作成中は表示するように設定しましょう。<?phpini_set('display_errors',1);?>実運用でエラーが出るなら使い物にならないし、サイトの構造を知られることになるので危険とも言われます。実運用では表示しないように戻しておきます。ページを構成中にエラーが出ると、ページそのものが出せなくなります。このようなときには役に立ちません。error_reporting表示するエラーの種類の選択です。いう具合に決められているのでこれを加えたもの(論理和)が指定値になります。デフォルトは22527です。デフォルトのままでいいでしょう。見るだけにして、次のlog_errorsに進んでください。[',error_reporting(),"]\n";?>こうなります。[32759]各ビットの意味です。log_errorsログを残すかどうかの選択です。デフォルトは「残す」です。このままでいいでしょう。残っていなければ、<?phpini_set('log_errors','On');?>エラーが多くてログファイルが肥大することがあるので、あえて残していないという可能性もあります。error_logログの出力先です。sudoできるか、admのグループメンバーならこのままでも閲覧できますが、PHP以外のウェブサーバー関係のエラーも時系列で入っています。出力先を指定すればPHPのみのエラーログを取得できます。$_SERVER['DOCUMENT_ROOT']ドキュメントルートを取得します。/var/www/htmlです。dirname()親ディレクトリを求めます。/var/wwwになります。.'/phpdata/errlog''/phpdata/errlog'を連結します。結局、ログは'/var/www/phpdata/errlog'に書き込まれます。/var/wwwにphpdataというディレクトリを作り、errlogというファイルを作ってwww-dataというユーザーが書き込めるようにパーミッションを変更します。やり方は次項で説明します。お勧め2第一のお勧めに従うだけの権限がない(sudoできない)場合は、これかな。?>__DIR__phpファイルのあるディレクトリです。/var/www/htmlです。.'/errlogAKWIX3CERQ''/errlogAKWIX3CERQ'を連結します。結局、ログは'/var/www/html/errlogAKWIX3CERQ'に書き込まれます。編集する.phpファイルのある場所に、errlogAKWIX3CERQというファイルを作ってwww-dataというユーザーが書き込めるようにパーミッションを変更します。これもやり方は次項で説明します。どちらに指定してもページ構成ができない時には/var/log/にエラーログが出ることがあります。エラーログファイルを用意するPHPはapache2を動かしているユーザであるwww-data(apache2の設定で変更可)で動いています。www-dataが読み書きできないものは、使えません。お勧め1ではOSのパーミッション設定にも依りますが、ここはrootでないとファイルが作れませんから、rootになるか、sudoを使ってファイルを作り、PHPから書き込みができるようにしておく必要があります。パーミッションの詳しい話は避けますが、たとえば、こんな感じ。errlogお勧め2ではローカルネットでノートPCをウェブサーバーにのドキュメントルートの説明では、/var/www/htmlをドキュメントルートにして、ここを普段作業する一般ユーザーadachiの所有にしていました。errlogAKWIX3CERQログファイルはウェブページの閲覧者からは見えないようにしておきたいデータです。/var/wwwはドキュメントルートの外になりますから、ウェブサーバーは絶対にサービスしない場所です。見せる予定のないものはドキュメントルート以下に置かないというのが鉄則です。これはapache2が決めていることです。PHPはこれ以外の場所のファイルも読み書きできます。お勧め2ではこの原則から外れますが、ファイル名がわからないようにしておけば、大丈夫だろうという気持ちです。試しに書いてみるエラーログのファイルが機能するかの確認は、エラーを起こさなくても可能です。);?>ページに書いたままにすると、ページが閲覧されるたびに1行ずつログが増えていきます。ログローテートの対象なので、古いものは自動的に圧縮されたり、最終的に消去されたりしてゆきます。自分で設定したものは、いつまでもそのままですから、肥大する可能性があります。不要になったら消去するのが吉です。ファイルを消去すると作り直してパーミッションの設定が必要になりますから、次のやり方がおすすめです。/vae/www/phpdata/errlog改行がひとつだけのファイルになります。安達順一(2020-01-16)https://dabiyone.com/。