PHP - 在Ubuntu中创建.txt文档

时间:2014-01-07 20:13:16

标签: php ubuntu cookies

我无法使用fopen()创建文本文档,以便以后用作Cookie文件。

我已阅读the documentation这个功能,但无济于事。

备注:

  • Ubuntu的
  • 可读/可写(“w +”)
  • 我尝试了几个存储位置,包括:
    • /首页/插孔/桌面/饼干
    • 的/ var / WWW /饼干
    • /家庭/插孔/文档/饼干

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

3 个答案:

答案 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服务器用户访问该文件。

请注意,这在生产环境中很糟糕。