2011-05-01 127 views
2

我在我的笔记本电脑上运行PHP脚本updreading.php本地(与Mac OS X 10.6.7)。 这里的updreading.phpPHP的fopen无法打开文件写在Mac OS X

<?php 
    $outFile = "examples-output.txt"; 
    $out = fopen($outFile, 'w') or die("can't open write file"); 
?> 

的内容。当我运行它,我得到“无法打开写文件”的错误消息。我认为它应该与权限有关。我已经让自己(arman)拥有/ Library/WebServer/Documents /,并且具有读写权限和'应用设置到封闭项目'的权限。我正在写入的脚本和文件(examples-output.txt)位于/ Library/WebServer/Documents/wabun /中。下面是/在/库/ Web服务器/文件/ wabun文件的权限:

[email protected] 1 arman admin   0 May 1 01:03 examples-output.txt 
[email protected] 1 arman staff  1657 May 1 01:04 updreading.php 

我试图解决这个问题的最后4小时尝试不同的权限,没有运气。任何想法如何解决这个问题,家伙?谢谢!

+0

什么是'的var_dump(is_writable($不过outFile))的输出;'? – Charles 2011-05-01 05:28:19

+0

@Charles:不必要的问题,肯定是假的...... – 2011-05-01 05:35:23

+0

@Alix,这将是唯一的,如果世界是不是疯了假的。我已经看到PHP无法打开文件进行写入,但如果文件是可写的,则返回true。它结束了一些奇怪的SELinux的问题,但这个特殊的问题是关于OS X. – Charles 2011-05-01 05:39:17

回答

1

我敢打赌问题是您的web服务器或PHP实例没有在同一用户(arman)下运行,您可以使用get_current_user()函数检查此问题。您可以配置Apache以使用您的权限运行(在ServerFault中请求)或为该文件夹提供更多慷慨的权限,如0777

另一件事,你确定$outFile映射到一个绝对路径?尝试做:

var_dump(is_file($outfile)); 
0

你需要做阿帕奇(Apache的假设是您正在使用的服务器)的所有者或放在组(并给组写访问)或给予全部或等写访问..督察Apache是​​实际执行该脚本的一个, 不是你。

+0

可以测试和解释如何做到这一点_“你需要让阿帕奇(Apache的假设是您正在使用的服务器)的所有者或放在组(并给组写权限)“_这将是非常有帮助的! – 2012-02-23 19:21:36

+0

'chmod'用于更改文件的读/写/ exec权限,'chown'用于更改文件所有者,'chgrp'用于更改文件组。 *最简单*(和最不安全)的修复将是'chmod 777 [目标文件/目录]'有问题的所有文件。这将给所有所有者/组提供读/写/执行权限。有更安全的方法,但取决于设置/需求。但是一些例如:chown将所有者改为apache。或者用apache创建一个组,并使用'chgrp'来改变组(也可能需要o chmod来更改用户和/或组的权限,具体取决于你所做的事情)OP中的当前权限显示只读所有者) – 2012-02-23 21:07:11

6

我有这个完全相同的问题。我必须确保所有父级文件夹的权限都正确。举例来说,如果(在OSX)试图写入该目录 ~/foo/bar/baz,我用命令chmod -R 777 ~/foo解决它。

相关问题