file_put_contents()不应该更新文件内容

时间:2012-08-02 18:03:57

标签: php file-io godaddy

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");

4 个答案:

答案 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必须有一个等价物。 支持线(或不存在它)是一场噩梦,但确实有效!

enter image description here