我在 Ubuntu 12.04 系统上使用 LAMP 服务器。在此之前,我安装 prestashop 没有任何问题。但是过了很长时间,今天当我尝试安装 prestashop 时,它真的向我显示了一个奇怪的错误。错误如下:
Warning: require(/var/www/Prestashop/config/config.inc.php): failed to open stream: Permission denied in /var/www/Prestashop/index.php on line 27 Fatal error: require(): Failed opening required '/var/www/Prestashop/config/config.inc.php' (include_path='.:/usr/share/php:/usr/share/pear/PEAR') in /var/www/Prestashop/index.php on line 27
为此,我决定调试错误,所以我浏览了许多博客和论坛,并检查了我的 php.ini 文件。该文件如下这。
在浏览了许多博客后,有人说该错误是针对 php pear 包的,链接是这里。
之后我只是像这样编辑了我的 php.ini pear url:
;UNIX: "/path1:/path2"
include_path = ".:/usr/share/php:/usr/share/php/PEAR"
之后我重启了我的 Apache 服务器,但并没有用。同样的错误又出现了。所以有人能告诉我这里的问题是什么吗?以及如何解决这个问题?
答案1
错误产生于require()
函数。此函数将在以下情况下暂停 php 脚本:
- 给定的文件(在您的案例
/var/www/Prestashop/config/config.inc.php
文件中)不存在或 - 当调用该函数的用户没有权限读取该文件时。
根据:
Warning: require(/var/www/Prestashop/config/config.inc.php): failed to open stream: Permission denied in /var/www/Prestashop/index.php on line 27
您的问题属于第二种情况。为了防止这种情况,您必须更改/var/www/Prestashop/config/config.inc.php
文件的权限,以便允许其他用户读取该文件。您可以通过从终端运行以下命令来执行此操作:
chmod +r /var/www/Prestashop/config/config.inc.php
如果其他文件也出现该错误,请按照相同方法更改权限。
还要检查目录的权限config
。这些权限必须是这样的:drwxr-xr-x
。如果不是,请在终端中使用此命令:
chmod +rx /var/www/Prestashop/config
答案2
目录的权限/var/www/Prestashop/config
为错误的。这drwx------
意味着只有newuser
用户可以访问它们。Web 服务器以 身份运行www-data
,显然它无法访问您的配置目录。
为组和所有人添加读取权限绝对没有坏处。
chmod +rx /var/www/Prestashop/config
向目录添加写权限可能被视为安全问题,但这也有争议,因为/tmp/
始终可以访问并且恶意软件倾向于将其用作支持目录。
当然,不要授予文件本身的写权限,因为那这将是一个安全问题。
如果你真的不想让它被世界读取,你可以将所有者更改为www-data
sudo chown www-data /var/www/Prestashop/config
这应该足够了,因为目录内的文件是全世界可读的(除了xml
再次需要正确所有权或权限的文件夹)。