2009-07-04 152 views
1

我被卡住了,需要一只手。希望有人能帮忙吗?PHP - 写入失败

任何人都有任何想法,为什么我在这段代码中“失败的写”?

$write_file = "/usr/home/public_html/php/users_v2.sql"; 
$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!"); 

if (is_writeable($write_file)) { 
    if ($write_handle === FALSE) echo 'Failed handle?!'; 
    if (fwrite($write_handle, "Hi\n") === FALSE) echo "Failed write!\n"; 
} 

fclose($write_handle); 

在此先感谢。

+0

不确定,但您可以检查程序是否具有写入文件的必要权限? – 2009-07-04 16:23:49

+0

是的,我检查了。 777的全线。它很奇怪。 – frio80 2009-07-04 16:26:15

回答

1

通过在创建文件句柄时使用OR运算符,您将根据操作返回布尔值。所以$ write_handle将包含true或false,而不是文件资源。一个更好的办法来打开写作和测试一个文件,这是成功的会是这样:

$write_handle = fopen($write_file, 'w'); 
if ($write_handle === false) 
{ 
    die('Could not open file ' . $write_file); 
} 

此外,可以使用的file_put_contents()函数处理fopen()函数,fwrite()将和FCLOSE()您。如果您只对同一个文件执行一次写入操作,我只会推荐此操作,因为这会造成很大的开销,除非您通过FILE_APPEND标志,否则将为每次写入都清空该文件。

0

我已经看到它使用无处不在,但问题是||。死亡(“Couln't open users_v2!”);

首先我说:

error_reporting(E_ALL); 

,看看PHP是错误的错误报告。

$write_handle = fopen($write_file, "w") || die("Couln't open users_v2!"); 
fclose($write_handle); 

返回无效的流句柄错误和文件句柄1.没有它,返回的文件句柄是“资源ID #x”。

更改行:

$write_handle = fopen($write_file, "w"); // || die("Couln't open users_v2!"); 

和你的代码工作正常。现在就去php.net上发布。