【问题标题】:Solutions for the potential lack of permission to mkdir() from within a php install script在 php 安装脚本中可能缺少 mkdir() 权限的解决方案
【发布时间】:2011-01-04 22:14:01
【问题描述】:

好的,我有一个问题。我需要创建一个文件夹来在 php.ini 中存储已编译的模板。我有一个安装脚本,它试图 mkdir() 一个适当的目录 (compiled_templates)。

它总是返回这个警告。

Warning: mkdir() [function.mkdir]: Permission denied in /home/tchalvak/sites/quotesite/quotes/install.php on line 92

运行更改将在其中创建已编译模板文件夹的文件夹的模式也会因相同的权限问题而出错。

有没有办法保证您可以通过 php 创建相当于存储文件夹的内容?您必须使用外部 php 程序才能确保创建文件夹?其他php开发者如何处理这个问题?

编辑:这是一个可安装的脚本,所以总体目标是允许 10 个不同的随机人在他们的服务器上安装脚本。不幸的是,这就是为什么“确保 php 对compiled_templates 目录具有所有这些必要的写入权限”作为手动过程并不实用的原因。

编辑:该死的,在尝试创建临时目录时也出现同样的权限错误。跛脚。

【问题讨论】:

    标签: php file-permissions mkdir


    【解决方案1】:

    如果是临时目录,则在系统临时目录中创建目录。

    mkdir(sys_get_temp_dir() . 'example');
    

    不过,一般的方法是简单地确保用户 PHP 的运行方式(例如 apache)在必要时具有写入权限。

    【讨论】:

      【解决方案2】:

      通常我们将系统设置为具有适当的权限,如果这不是一个选项,您的脚本应该会失败并显示一个很好的描述性错误消息和可能的解决方案。

      既然你提到你想要一个临时文件夹,也许 tmpfile()、tempnam() 和 sys_get_temp_dir() 函数可能有用给你。

      【讨论】:

        【解决方案3】:

        我同意将目录放在tmp 中。要回答有关在安装程序脚本中处理此问题的更一般性问题......您应该在运行脚本之前在 Web 根目录上设置权限,并确保权限在包中的任何目录上都是正确的。话虽如此,我通常会尽量避免使用 Web 安装程序,而是为 CLI 版本的 php 编写安装程序。当然,您需要在盒子上进行 ssh 访问才能做到这一点,但至少对我来说,我很少这样做。

        【讨论】:

          【解决方案4】:

          如果使用系统临时目录不适合您,我见过有创意的安装程序要求提供 FTP 凭据,然后使用 FTP 创建目录和设置权限。

          然而,这可能有点太聪明了。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-10-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-15
            • 2017-04-18
            • 1970-01-01
            • 2022-08-16
            相关资源
            最近更新 更多