在本地计算机上测试以下代码时,未报告任何错误。但是在我们的服务器上测试它之后,我得到了以下奇怪的错误: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);
但没有希望。
出现此错误的原因是什么?
答案 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";