【问题标题】:File not being created even though write permissions exist即使存在写权限,也没有创建文件
【发布时间】:2013-05-04 02:07:31
【问题描述】:

我遵循this question 中的选定答案,我正在尝试将某个变量的内存中的内容导出到 .php 文件。然后我后来 require_once 生成的 php 文件。

问题是 php 文件永远不会被创建。所以当我尝试要求它时,我得到一个错误(HTTP 500,因为代码取决于这个变量并且因为这个文件不存在)。

错误日志显示该文件不能被要求,因为没有这样的文件或目录。

我试图在其中创建文件的目录有 755 个权限。

这是我用来将变量导出到文件的代码:

$variable_export = var_export($elasticaObject, true);
$variable = "<?php\n\n\$$elasticaObject = $variable_export;\n\n?>";
file_put_contents('theIndex.php', $variable);

知道我做错了什么以及为什么没有生成文件 theIndex.php 吗?

【问题讨论】:

  • file_put_contents 的返回值是多少?
  • theIndex.php 是否已经存在?目录可能是 755,但如果 theIndex.php 已经存在并且由其他用户拥有,那么您仍然无法覆盖它。
  • @andrewsi 如何从 file_put_contents 获取返回值?
  • @MarcB 不,它不存在。
  • @IMUXIxD $myval = file_put_contents('theIndex.php', $variable); var_dump($myval); 这会告诉你写入的字节数,如果失败则返回 false。

标签: php file permissions file-permissions


【解决方案1】:

您的模式可能不足。

755 = RWX(所有者)、RW(组和其他)。

组和其他人可能只是读取并穿过文件夹。

如果启动 PHP 的用户不是文件夹的所有者,这可能是个问题。

尝试在文件夹中添加一个 chown user:group,以便您的 php 用户(可能是您的网络服务器)可以在其中写入。

干杯,

K.

【讨论】:

  • 我如何做一个 chown 用户:组。你能更新你的答案解释如何。
  • 假设您的目录是“/home/koreth/test”:chown www-data:www-data /home/koreth/test。 www-data 是 Debian 上 Apache 的默认用户,对于其他发行版应该是其他用户。
  • 我没有使用 apache,我使用的是 lightpd。但我使用的是 debian。
  • 所以我想你应该在我的评论中用 lighttpd:lighttpd 替换 www-data:www-data。
猜你喜欢
  • 2021-08-17
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 2013-04-21
相关资源
最近更新 更多