1

我被困住了,需要帮助。希望有人可以帮忙?

任何人都知道为什么我在这段代码中“写入失败”?

$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);

提前致谢。

4

2 回答 2

1

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

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

此外,您可以使用为您处理 fopen()、fwrite() 和 fclose() 的函数。如果您只对同一个文件执行一次写入,我只建议这样做,因为这会产生很多开销,并且除非您传递标志,否则每次写入都会清空文件。file_put_contents()FILE_APPEND

于 2009-07-04T17:31:41.613 回答
0

我已经看到它无处不在,但问题是|| die("无法打开 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 上发布这个。

于 2009-07-04T16:19:26.323 回答