PHP可以';不写文件
我在CentOS上有一个Apache HTTP服务器,我安装了PHP(PHP可以';不写文件,php,apache,file,centos,Php,Apache,File,Centos,我在CentOS上有一个Apache HTTP服务器,我安装了PHP(yum install PHP),然后测试了一个在文件中写入文本的简单脚本,我就是这么做的 $file = fopen($filename,"w") or die("Failure"); 问题是它总是失败的,即使我在那个目录中做了一个chown apache:apache/var/www/html/*或chmod 777*,那么有人知道如何理解/修复这个问题吗 编辑:所以问题是目录本身没有chown将w模式更改为w+——如
yum install PHP
),然后测试了一个在文件中写入文本的简单脚本,我就是这么做的
$file = fopen($filename,"w") or die("Failure");
问题是它总是失败的,即使我在那个目录中做了一个chown apache:apache/var/www/html/*
或chmod 777*
,那么有人知道如何理解/修复这个问题吗
编辑:所以问题是目录本身没有chown将w模式更改为w+——如果文件不存在,它将允许php创建文件
$file = fopen($filename,"w+") or die("Failure");
如果没有来自PHP的实际错误消息,很难说它是什么 请查看此页面: 长话短说,创建并设置自定义错误处理程序,如下所示:
<?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必须创建文件,它就有权这样做
编辑:只是想知道为什么这篇文章投了反对票——什么是“极其草率、不费力气的帖子,或者是一个明显而且可能危险地错误的答案?”?我告诉OP检查错误消息,并以正确的递归方式设置它们的权限。您能尝试在目录中创建一个文件吗?这应该可以确定这是权限问题还是编码问题#2您是否已说明SELinux?您是否正在该目录或
/var/www/html/
的子目录中创建文件并运行脚本?使用-R
选项和chmod
和chown
递归应用mods。然而,777
是您可以设置的最差chmod。在文件上使用更合适的方法,如640
,在目录上使用750
。因此,如果您正在写入/var/www/html/
但失败,请检查/var/www/html/
上的权限。更改目录中某个文件的权限仅在该文件已存在时才有帮助。更改要写入的目录的权限将允许您创建新文件。PHP将尝试在模式w下创建该文件。w和w+的区别在于,w+对阅读和写作都是开放的。