我无法使用fopen()
创建文本文档,以便以后用作Cookie文件。
我已阅读the documentation这个功能,但无济于事。
备注:
PHP
echo "debug";
echo "\r\n";
$cookie = fopen("/home/jack/Documents/cookie", "w+");
fclose($cookie);
if(!file_exists($cookie) || !is_writable($cookie))
{
if(!file_exists($cookie))
{
echo 'Cookie file does not exist.';
}
if(!is_writable($cookie))
{
echo 'Cookie file is not writable.';
}
exit;
}
结果
debug Cookie file does not exist.Cookie file is not writable.
其他有趣的事实
fopen(realpath("/home/jack/Documents/cookie"), "w+")
echo "\r\n"
给出了一个空间。为什么不换行?我认为问题必须与我创建文件的权限有关,但我没有问题“右键单击”在桌面上创建文本文档。
这个作品这个作品这个作品这个作品这个作品这个作品这个作品
echo "debug";
echo "\n";
$jack = "jack";
$cookie = "/home/jack/Documents/cookie";
touch($cookie);
chmod($cookie, 0760);
if(!file_exists($cookie) || !is_writable($cookie))
{
if(!file_exists($cookie))
{
echo 'Cookie file does not exist.';
}
if(!is_writable($cookie))
{
echo 'Cookie file is not writable.';
}
exit;
}
fclose($cookie);
这个作品这个作品这个作品这个作品这个作品这个作品这个作品
而不是fopen()
..
touch()
创建chmod()
获取权限我还将用户名 jack 添加到 www-data 组。
chmod($path, 0760)
群读/写参考
chmod()
八进制值here。答案 0 :(得分:3)
再次查看file_exists
的文档。它不会将文件句柄作为参数,而是采用字符串文件名。 is_writable
也是如此。即使它确实如此,你打开文件句柄然后立即关闭它,所以我不确定为什么你在关闭文件指针之后就试图使用它。
你可能是正确的,因为你设置了不正确的权限,但我会先从这里开始。
此外,如果您只是尝试创建文件,则可以考虑使用touch
方法,而不是:
if( touch( $filename ) ) {
// It worked!
} else {
// It didn't work...
}
答案 1 :(得分:1)
看起来像是一个权限问题。 PHP运行的用户是什么?它可能以www-data或类似的方式运行。您应该确保您尝试写入的文件夹可由运行PHP的用户或组写入。如果您在登录插孔时创建了这些文件夹,它们可能属于jack:jack,并且无法通过www-data访问:www-data。
您还可以将插孔添加到www-data组,以使开发更容易。
答案 2 :(得分:1)
Web服务器未以您的用户身份执行。 touch /home/jack/Documents/cookie && chmod 777 /home/jack/Documents/cookie
允许Web服务器用户访问该文件。
请注意,这在生产环境中很糟糕。