Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/250.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP可以';不写文件_Php_Apache_File_Centos - Fatal编程技术网

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+——如

我在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+——如果文件不存在,它将允许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+对阅读和写作都是开放的。