当我无法打开文件时,我如何得到比'FALSE'更有意义的东西?
$myFile = "/home/user/testFile.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
当我使用die
语句时,can't open file
返回给客户端,它几乎是无用的。如果我删除它,不会引发错误。如果我返回$fh
,它就是FALSE
。我尝试了本地文件名和绝对文件名。我的index.html
文件在我的hole文件夹的子文件夹之一。此外,我正在使用suPHP与我试图写入具有0755
权限的文件夹(suPHP要求所有文件夹都具有此权限)。
我如何找出为什么有问题,或者至少在试图打开文件之前查询它
使用error_get_last()捕获php中的(被抑制的)错误:
$f = @fopen("x", "r") or die(print_r(error_get_last(),true));
fopen
应该在失败时引发E_WARNING。请参阅error_get_last或set_error_handler(*)来捕获它。除此之外,您还可以使用file_exists和is_readable来检查文件是否丢失或存在其他(可能与权限相关)问题。
(*)我认为最好总是设置一个错误处理程序,将所有PHP错误转换为异常。