【问题标题】:PHP Chmod Problem Creating filesPHP Chmod 问题创建文件
【发布时间】:2011-06-01 08:59:00
【问题描述】:

我遇到以下情况:

public_html - 755

=> 头像 - 777

=> 民意调查 - 755

现在,当我使用以下代码时,我会收到一个错误(警告:file_put_contents(../test.php) [function.file-put-contents]: failed to open stream: Permission denied in XXX):

<?php
file_put_contents('../test.php','<?php');
?>

但是当我使用下面的代码时,它会工作得很好:

<?php
file_put_contents('test.php','<?php');
?>

(均从 'avatar' 执行,使用 0777)

我该如何解决这个问题?

【问题讨论】:

  • “都从‘头像’执行”?你对此有多大把握?
  • 是的,“execute.php”在头像文件夹中,权限为0777,而public_html的权限为0755

标签: php file-get-contents chmod open-basedir


【解决方案1】:

我想即使你有 0777 权限,也无法写入更高的文件夹。

无法在此目录上使用 chmod,您必须使用 FTP 或其他方式。

【讨论】:

    【解决方案2】:

    由于您的脚本是从avatar 执行的,它具有0777 权限(世界读/写/执行),因此您能够在其中创建文件是正常的(即:@ 987654322@).

    如果您无法在public_html(即:file_put_contents("../test.php"))中创建文件,这是因为执行您的脚本的用户(很可能是 Apache 用户)不是 public_html 的所有者(所有者很可能是 FTP 用户)。因为 0755 意味着只有所有者才能写入目录,其他人只能读取或执行。

    如果你有 shell 访问权限,你可以使用chown 来更改文件的所有者:

    bash-4.1.5$ chown newuser public_html
    

    或者你可以chmod为非所有者提供更高的权限,但你应该小心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      • 2013-01-11
      • 2011-07-29
      • 1970-01-01
      相关资源
      最近更新 更多