2

好吧,所以我有一个问题。我需要创建一个文件夹来在 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 目录具有所有这些必要的写入权限”作为手动过程不切实际的原因。

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

4

4 回答 4

3

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

mkdir(sys_get_temp_dir() . 'example');

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

于 2010-01-14T02:11:04.470 回答
1

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

既然您提到您想要一个临时文件夹,那么tmpfile(),tempnam()sys_get_temp_dir()功能可能对您有用。

于 2010-01-14T02:13:28.833 回答
1

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

于 2010-01-14T02:25:56.897 回答
0

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

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

于 2010-01-14T03:02:30.100 回答