2014-10-07 142 views
2

我对CentOS的一个的Apache HTTP服务器,我安装了PHP(yum install php),然后测试了一个简单的脚本,在文件中写入文本,所以我做PHP不能写入文件

$file = fopen($filename,"w") or die("Failure"); 

的问题是即使在该目录中执行了chown apache:apache /var/www/html/*chmod 777 *之后,它总是失败,所以任何人都知道如何理解/解决此问题?

编辑:所以有问题是thath目录本身did'nt有CHOWN

+0

你可以尝试在目录中创建一个文件吗?这应该隔离它是否存在权限问题或编码问题。# – ryekayo 2014-10-07 17:10:44

+2

#1包括您的代码。 #2你有没有占用SELinux? – miken32 2014-10-07 17:14:04

+0

你正在创建你的文件并在该目录或'/ var/www/html /'的子目录中运行你的脚本吗? – jeroen 2014-10-07 17:14:14

回答

0

下进行更改模式,W + - 这将允许PHP,如果不是存在,创建文件。

$file = fopen($filename,"w+") or die("Failure"); 
+0

所以'w',请参阅http://php.net/manual/en/function.fopen.php – jeroen 2014-10-07 17:16:41

+1

PHP将尝试以模式w创建它。 w和w +之间的区别在于w +打开了阅读和书写。 – Laereom 2014-10-07 17:17:38

4

很难说没有来自PHP的实际错误消息。

看一看这个页面:

http://www.w3schools.com/php/php_error.asp

长话短说,创建并设置自定义错误处理程序,就像这样:

<?php 
//error handler function 
function customError($errno, $errstr) { 
    echo "<b>Error:</b> [$errno] $errstr"; 
} 

//set error handler 
set_error_handler("customError"); 

//trigger error 
$file = fopen($filename,"w") 
?> 

在你的情况,我认为,在为了能够在给定的目录中创建新文件,你需要为chmod或chown添加一个'-R'标志,并且在目录本身而不是孩子上调用它 - 这样,如果PHP必须创建文件,它有权这样做。

编辑:只是好奇为什么这有一个downvote-什么是“极其草率,没有努力消耗的帖子,或答案是明确的,也许是危险的不正确。”?我告诉OP检查错误消息并以正确的递归方式设置他们的权限。