2010-09-08 36 views
4

有一个文件,该文件是可读可写,但被的fopen返回false ...PHP的fopen返回false,但文件是可读/写

if(is_readable($file)) echo 'readable '; 
if(is_writable($file)) echo 'writable '; 
$fp = fopen($file, 'a+'); 
var_dump($fp); 

结果是

readable writable bool(false) 

任何想法?

确定它必须是一个许可的事情,但在文件上尝试777具有相同的结果。

+1

你1000%肯定它是一个文件,而不是一个目录? 'error_reporting(E_ALL);'说什么? – 2010-09-08 12:03:01

+4

1000%似乎有点矫枉过正; P – Wrikken 2010-09-08 12:05:59

+0

将错误报告设置为E_WARNING并查看错误消息是什么。 – jmz 2010-09-08 12:21:02

回答

16

让我们尝试获取更多信息。
什么

$file = 'p:\muh'; 

error_reporting(E_ALL); 
ini_set('display_errors', true); 
echo 'phpversion: ', phpversion(), "\n"; 
echo 'uname: ', php_uname("s r"), "\n"; // name/release of the operating system 
echo 'sapi: ', php_sapi(), "\n"; 

echo $file, file_exists($file) ? ' exists' : ' does not exist', "\n"; 
echo $file, is_readable($file) ? ' is readable' : ' is NOT readable', "\n"; 
echo $file, is_writable($file) ? ' is writable' : ' is NOT writable', "\n"; 

$fp = fopen($file, 'a+'); 
if (!$fp) { 
    echo 'last error: '; 
    var_dump(error_get_last()); 
} 
else { 
    echo "ok.\n"; 
} 

打印?

还看到:http://docs.php.net/error_get_last

+0

它是一个处理错误的插件 - 只是报告它无法访问文件 - 问题是权限,因为文件的所有者不允许php chmod - 并且该错误正在被压制...... – 2010-09-09 10:34:41