Go Daddy是我的托管服务提供商。他们在Go Daddy的共享服务器上禁用fwrite()
和file_put_contents()
。
我迫切需要写一个文件。出于某种原因,file_put_contents()
成功创建了一个文件(如果该文件尚不存在),并且写入一次。但是,它不会更新文件的内容(应该如此)。
示例:如果我将下面的'write'字符串更改为'Goodbye World'并重新编写脚本,则freesample7.php文件中的任何内容都不会更改,它仍将保留为'Hello World ...'。
作为修复,我尝试删除文件,然后每次运行脚本时重新创建它,但是,这并没有解决问题,文件的内容保持与第一次写入文件时相同。
我想知道是否有办法解决这个问题,因为我迫切需要想办法写一个文件并定期更新该特定文件的内容。
unlink('../html/freesample7.php');
sleep(20);
file_put_contents("../html/freesample7.php","Hello World. Testing!sdsd");
答案 0 :(得分:2)
问题是对godaddy服务器的限制。没有办法解决这个问题,我尝试接受这篇文章中提到的建议但没有成功。我找到了一个解决方法,使用cron作业和一个mysql php脚本来做我必须做的事情。
对于那些需要使用共享服务器写入文件以便在GoDaddy上托管的人来说,就我而言,解决这个问题的唯一方法是在GoDaddy而不是共享服务器上获取专用服务器。
答案 1 :(得分:1)
启用这些功能。如果他们被禁用,您将会遇到No suitable wrapper found
的错误。
接下来应该做的是检查服务器创建的文件的权限。
另外,请尝试以下方法:
file_put_contents("FILE.txt", "STring", FILE_APPEND);
这将附加文件,而不是覆盖它。它有所作为吗?
答案 2 :(得分:1)
您是否尝试过使用php函数 CHMOD()来更改文件的权限?
// Read and write for owner, read for everybody else
chmod("/somedir/somefile", 0644);
有关chmod的更多详细信息,请参阅http://php.net/manual/en/function.chmod.php。虽然我可以看到这对Go Daddy来说是一个安全问题,但无论如何都要试一试。
已编辑添加替代
或者,因为这不起作用,因为我有一个Go Daddy托管帐户,我试过这个并且它有效。您可以使用fopen,fwrite和fclose代替file_put_contents。
$myFile = "testFile.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = "Some text in here\n";
fwrite($fh, $stringData);
$stringData = "Some more text in here\n";
fwrite($fh, $stringData);
fclose($fh);
答案 3 :(得分:1)
我刚遇到这个问题。
我的解决方案如下:
环境:
Plesk / Windows / PHP
file_put_contents
解决方案:
1)转到文件管理器
2)单击文件或文件夹旁边的上下文菜单
3)点击“更改权限”
4)选择“IWPG”组
5)增加右侧的权限级别(例如总控制)并保存
linux / cpanel必须有一个等价物。 支持线(或不存在它)是一场噩梦,但确实有效!