【问题标题】:Using fopen to create a file in PHP has permission denied使用 fopen 在 PHP 中创建文件的权限被拒绝
【发布时间】:2013-07-30 23:46:48
【问题描述】:

我想动态创建一个文件并向其中写入一些 JSON。我有 JSON,这很好。但是当我尝试创建文件时出现了问题。似乎这可能是权限或文件所有者的问题,但我不确定如何解决它。这是我的代码:

$strFile = PUBLIC_PATH . '/javascript/members.json';
if (!file_exists($strFile)) {
    chmod(PUBLIC_PATH . '/javascript', 0755);  // operation not permitted error
    fopen($strFile, 'w');
    chmod($strFile, 0755);
    chown($strFile, 'www');
}
file_put_contents($strFile, $arrMembers);

我觉得我在这里遗漏了一些非常明显的东西。

【问题讨论】:

  • 我相信我必须将所有者设置为 www。当前所有者是我的计算机。
  • 如果网络服务器用户一开始没有编辑文件/目录的权限,它不能用chmod改变权限。您必须在 PHP 脚本之外执行此操作。
  • chown 必须先运行,但只有所有者或su/root 才能修改所有者和权限。

标签: php file file-permissions


【解决方案1】:

检查运行 PHP 的用户是否对文件路径的每个目录都具有“X”权限。 它将需要它来访问文件

如果您的文件是:/path/to/test-in.txt 你应该有 X 权限:

/path
/path/to

/path/to/test-in.txt 的读取权限或通过 CPanel/ftp 提供对文件的写入权限

【讨论】:

  • 我认为这就是问题所在,但是我该如何用 PHP 做到这一点?
  • 通过编程需要使用 ftp 或 CPanel 更改权限所需的大量编码
  • 我尝试对目录 'javascript' 进行 chmod'ing,但操作不允许。
  • 使用 ftp 客户端来做这件事
猜你喜欢
  • 2020-09-30
  • 2011-11-10
  • 2011-08-01
  • 1970-01-01
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-09
相关资源
最近更新 更多