2011-04-21 45 views
2

我运行标准上OSX 10.5.8安装PHP和Apache的,并且该文件夹的文件模式设置,我试图打开(订单)为777,组是_WWW。在PHP在OSX 10.5的fopen =权限被拒绝

$filename = 'orders/54c9942b.txt'; 

if (!$handle = fopen($filename, 'w')) { 
    return(false); 
} 

我得到如下:

Warning: fopen(orders/54c9942b.txt) [function.fopen]: failed to open stream: Permission denied in /Users/New/Sites/thisisnothere/order-save.php on line 36 

* 编辑:我测试了我的网络服务器(一个我支付,而不是一个我的设置)和它的作品如我所料。这导致我相信这是配置我的服务器的问题,也许是Apache中的访问问题?或PHP?我完全不熟悉Apache的配置。

回答

1

尝试使用在你的fopen()函数命令的完整文件系统路径,看看是否可行。尝试它在其他地方你也知道会工作(也许/tmp)。

+0

它在我尝试写入/ tmp时起作用,这感觉就像是进步。然而,完整的路径不起作用。 – 2011-04-21 22:56:04

+0

我仔细检查过,而我试图写入的文件夹CHMOD毕竟不是777。 D'哦。感谢检查写入/ tmp的提示,它让我知道错误不在PHP中! – 2011-04-21 23:03:18

0

的事项的权限,该文件,而不是它在目录中的。我敢肯定,这就是你的问题。 “

+0

虽然文件还不存在 - 我试图用fopen创建它。这不是我应该如何创建一个新文件? – 2011-04-21 22:21:18

0

”如果您试图让该程序运行并且出现错误,则可能需要检查是否已授予您的PHP文件访问权限,以便将信息写入硬盘驱动器中“取自tizag.com因此听起来像是您应该如泰勒所言,设置php文件本身的权限。

+0

正在拨打电话的PHP文件是CHMOD 777,是否不允许?所有者是相同的(我的计算机名称),并且该组在PHP文件上是_WWW。 (与我正在尝试写入的文件夹相同)。 – 2011-04-21 22:37:16

0

我有你的解决方案,但我不是一个安全专家,所以只能在本地主机,如果使用此解决方案你的数据不是如信用卡号码,医疗信息等,也许其他一些专家在这里发表评论,敏感那。

它是否有差别,如果你直接调用PHP的自己一个控制台上,或者如果您通过您的本地Web服务器调用相同的PHP文件。我发现我的mac(狮子)以用户“localaccounts”的身份通过web服务器运行php。

然后,我已经解决了的问题如下:

步骤1:更改组的当前目录,并且您需要通过Web服务器名为“localaccounts”集团要修改的文件。例如。在终端输入以下命令将其应用于当前目录,子目录“user images”和文件foo.sqlite。

chgrp -R localaccounts . foo.sqlite user\ images/ 

步骤2:授予组成员使用commad

chmod g+w -R . foo.sqlite user\ images/ 

注意,圆点表示当前目录写权限。

我想对我的托管商同样的事情,但他们不允许这种方式。相反,他们建议我使用PHP CGI。 PHP会像我的FTP用户访问那样执行。我想这更安全,但我还没有尝试过。