这是关于我的系统配置以及 apache/php 如何受此影响的问题。当我转移到生产环境时,在我的开发服务器上运行的代码无法运行,这就是我将错误归结为的问题。我想在 php 中使用 file_put_contents 来简单地在我的系统上创建一个文件。这是我正在使用的非常简单的代码:
print file_put_contents("testfile.txt","this is my test")?"made file":"failed";
没有错误被抛出,但它总是打印“失败”。当我在普通目录中运行它时,不会生成任何文件,但是当我将它移动到具有 777 权限的目录时,它会生成文件,但仍然会打印“失败”并且什么都不保存。如果我将 php 文件本身更改为具有 777 权限,则没有任何变化。如果我将目标文件(testtext.txt)更改为具有 777 权限,则没有任何变化。
当我将 php 文件的所有者更改为与创建的 testfile.txt 相同时,没有任何变化。当我尝试相对路径与绝对路径时,没有任何变化。出于某种原因,我可以让 php 创建文件,但它始终为空,并且使用 file_put_contents 我无法写入任何内容。
创建的文件位于“www-data”的所有者和组中,如果有帮助,我将作为 root 用户。我该怎么做才能让它工作?我认为我的 php 版本正在使用 suhosin 扩展,如果这可能与它有任何关系(或者如果你认为有办法在 php 或 suhosin ini 文件中解决这个问题,我也可以这样做)。
在过去的几天里,我一直在寻找这个几个小时。
编辑:基于以下评论的更新。当我在 CLI 模式下运行它时,它确实可以工作,但是由于我需要通过 apache 运行它,我该如何使用这个事实?这是否告诉我们一些关于停止文件写入的位置或内容的信息?此外,file_put_contents 调用实际上返回“false”而不是零。