Ubuntu 12.04 php PEAR 包问题

Ubuntu 12.04 php PEAR 包问题

我在 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再次需要正确所有权或权限的文件夹)。

相关内容