Apacheのerror潰し
特にちゃんと意識せずに色々ツールやらソフトやら入れていたせいで、Apacheのエラーログが膨大になっていました。まさかの1.7Gとか。
で、ちゃんとエラーログを見て各々潰していくようにしました。Ubuntu 11.04 64bitの場合、エラーログは
/var/log/apache2/error.log
です。
◆PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626/phpshield.5.3.lin'
存在しないモジュールをロードしようとして起きるエラー。これ単体だと特に大丈夫な気もしますが、他の部分で影響が出ることがあります。僕の場合これのせいでPHP Fatal error: Class 'Collator' not foundなど出て一部のクラスが使えませんでした。
対処法:
phpshield.5.3.linをロードしようとしている.iniファイルがどこかにあるので、それを探してロードする部分をコメントアウト。この場合は/etc/php5/conf.d/にphpshield.iniなるものがあり、そこに
extension=phpshield.5.3.lin
と書かれていたのでコメントアウト。apache再起動してエラーが出なくなることを確認します。
ソース
◆PHP Notice: Undefined variable: filename
PHPを使用したときに、変数が未定義であることによって起きます。対処法としては変数を呼び出す前に$filename="";などと空白で初期化します。
けど毎回そうするのも手間だし、これはエラーと言うより注意(Notice)なのでエラーとして吐かない設定にした方がいいです。
PHPの設定ファイルである『php.ini』の『error_reporting = E_ALL & ~E_NOTICE』を有効にして、他の『error_reporting 』を無効にします。有効にするには行頭の;を外し、無効にするには行頭に;を追加します。php.iniは
/etc/php5/apache2/php.ini
にあります。
ソース
◆[client 127.0.0.1] client denied by server configuration: /var/www/
/etc/apache2/sites-available/にあるdefaultもしくはdefault-sslにある<Directory /var/www/>の部分で
allow from 127.0.0.1
をいれてあげましょう。allow from allでもいいですが一応制限はしておいた方がいいかなと。
◆[client 127.0.0.1] File does not exist: /var/www/robots.txt
上を修正したら出ました。どうやらロボット検索用のrobots.txtが必要なようです。といっても大半の人はこれを用意していないので別にいいんですが、今回は自己満足のエラー潰しなので無くします。
やり方は簡単で、そこにそのファイルをおけばいいだけです。ただまぁロボット検索用なので一応設定を書いておくとすると、
User-Agent: *
Disallow: /
最終行は空行でなければいけません。改行してから保存しましょう。この書き方でrobots.txtを参照してくれる紳士的なロボットのそのウェブサーバーへのアクセスをブロックできます。
ソース:
ロボット対策