php不会创建文件

时间:2014-04-18 11:16:54

标签: php file fopen

所以我尝试用fopen(文件,w)用php创建一个文件。但它返回一个错误。但是这只是在服务器端,当我在localhost(XAMPP)

上运行时,它可以正常工作

代码如下

function createdatafile(){
//Rolls a random number which will be the file name.
$x = rand(0, 9999999);
$file = "Datafiles/".$x.".csv";
if(!file_exists($file)){
    $nfile = fopen($file, "w") or die("cannot create file: $file ");//fails 
    //createdata() just returns a string. However this doesnt even get executed.
    fwrite($nfile, createdata());
    fclose($nfile);
}else{
    //calls itself for another roll if the file already existed.
    $this->createdatafile();
}}

这段代码在localhost上运行,但在服务器上运行。我尝试了很多不同的东西和解决方案,这些都是像以前这样的问题,这些都没有用。但是在尝试附加到现有文件后,很明显它可以找到该文件,因此不是文件路径错误。它只是拒绝打开文件。所以我的文件夹结构如下。

/phpscripts.php
/Datafiles/Data.csv
/files/images.png <--- tried moving the file here didn't work either.

我可以从中得出的唯一结论是服务器不允许php编写和打开文件,但我不知道为什么或如何更改它。所以有人知道如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

我认为这是用户权限错误。确保您的httpd用户对您尝试写入的文件/目录具有写入权限。但是要确定,您应该在尝试open($f, 'w')时启用日志记录并检查php抛出的警告。

再次假设这是一个权限错误并且这是一个Linux服务器,你应该chown httpduser:httpduser /Datafiles/然后chmod u+w /Datafiles/chmod g+w /Datafiles/