解析用にファイル (バイナリ ファイル) を開こうとしていますが、fopen() が常に NULL を返します。
単純にテストスクリプトを作成するまで、ほぼすべてを除外しました。
<?php
$idx = fopen('/usr/home/username/web/appname/dev/www/debug/18194001.idx','r');
trigger_error(var_export($idx,true));
exit();
trigger_error(var_export()); からの出力。は:
[31-Mar-2013 16:30:34 UTC] PHP Notice: NULL in /usr/home/username/web/appname/dev/www/debug/ajax.idx.php on line 3
2 番目の fopen() オプションにどのフラグを指定しても、同じ結果が得られます。
さて、明らかな問題は、ファイルが存在するかどうか、そしてそれを読み取る権限があるかどうかです。それらの両方に対する答えはイエスです。相対パスと絶対パスを使用しましたが、どちらもファイルを正しく読み取りました。file_get_contents() も問題なくファイルを読み取ります。
is_readable() と file_exists() はどちらも true を返します
そのファイルの ls -lah の出力は次のとおりです。
-rwxrwxrwx 1 username username 2.0K Mar 30 15:02 18194001.idx
「username」は、Web サーバー プロセスと PHP (lighttpd および php-fpm) が実行されているユーザー名と一致します。親ディレクトリには、user/group/all に対する読み取り/読み取り/読み取り権限もあります。
他のファイルを試してみましたが、fopen でスローしたほとんどすべてが NULL 値を返していることに気付きました。
ヘルプ?
PHP 情報:
PHP 5.4.6 (cli) (built: Oct 10 2012 10:43:19)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
with XCache v2.0.1, Copyright (c) 2005-2012, by mOo
Lighttpd 情報:
lighttpd/1.4.31 (ssl) - a light and fast webserver
Build-Date: Sep 7 2012 15:38:20
OS:
FreeBSD hostname.hostname.hostname 8.2-RELEASE FreeBSD 8.2-RELEASE #0: Thu Feb 17 02:41:51 UTC 2011 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64