当我无法打开文件时,如何获得比'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
文件位于我的孔文件夹的一个子文件夹中。此外,我正在使用suPHP和我试图写入的文件夹获得0755
的权限(suPHP要求所有文件夹都这样)。
如何找出问题的原因,或者至少在尝试打开文件之前查询问题。
答案 0 :(得分:8)
使用error_get_last()来捕获php中的(被抑制的)错误:
$f = @fopen("x", "r") or die(print_r(error_get_last(),true));
答案 1 :(得分:6)
fopen
应该引发E_WARNING。请参阅error_get_last或set_error_handler(*)以了解相关信息。除此之外,您可以使用file_exists和is_readable来检查文件是否丢失或是否存在另一个(可能是与权限相关的)问题。
(*)我认为总是设置一个错误处理程序将所有PHP错误转换为异常是一种好习惯。