在php中写入文件时出错

时间:2014-10-09 07:40:00

标签: php file

在本地计算机上测试以下代码时,未报告任何错误。但是在我们的服务器上测试它之后,我得到了以下奇怪的错误:php没有在服务器上写文件。

我正在使用的代码:

 $myfile = fopen( "results/co".$a[$i].".txt", "w") or die("Unable to open file!");
 fwrite($myfile,"some text");
 fclose($myfile);

因此在这种情况下不会创建文件。 当我尝试替换文件名"结果/ co"。$ a [$ i]。" .txt"其价值:" results / co00112test.txt" :

 $myfile = fopen( "results/co00112test.txt", "w") or die("Unable to open file!");
 fwrite($myfile,"some text");
 fclose($myfile);

它运作得很好。

我也尝试了以下内容:

 $name = "results/co".$a[$i].".txt";
 $myfile = fopen( $name, "w") or die("Unable to open file!");
 fwrite($myfile,"some text");
 fclose($myfile);

但没有希望。

出现此错误的原因是什么?

3 个答案:

答案 0 :(得分:0)

如果您在设置静态文件名时代码正常,很明显您的变量$a[$i]是错误的。

您可以按照这种方式进行调试:

$name = "results/co".$a[$i].".txt";
var_dump($name);

该名称应该显示一些奇怪的内容,并会告诉您文件中发生了什么。

答案 1 :(得分:0)

可能全部是因为权限。您的php用户没有文件夹的权限,您要在其中创建文件或没有文件的权限,您尝试编辑该文件(如果文件已经存在)。

你可以在这里阅读有关权限的完整文章(它是关于ubuntu的,但它与哪个操作系统并不重要):https://help.ubuntu.com/community/FilePermissions

您可以尝试权限644,或者如果它不起作用,您可以使用777. 644更安全,因为只有该文件的所有者才能编辑它,而不是您操作系统的任何用户。

您可以更改文件夹及其中所有文件/文件夹的权限,如下所示:

chmod -R 644 /path/to/folder/

我认为644是文件的标准,755是目录。

您可以像这样更改文件/文件夹的所有者:

chown name_of_user:name_of_group /path/to/folder

答案 2 :(得分:0)

您的文件名以双零字符开头,因此可能存在问题。

这不起作用:

$number = 112;
$file_name = "results/co".$number."test.txt";

这应该有效:

$number = 112;
$number_pad = str_pad($number, 5, '0', STR_PAD_LEFT);
$file_name = "results/co".$number_pad."test.txt";