0

我正在尝试让我的 Zend Framework 应用程序在我的 VPS 上启动并运行。我收到此错误:

错误

警告:realpath() [function.realpath]:open_basedir 限制生效。

显然这在 Plesk 的默认限制中很常见,所以我相信你们中的一些人也遇到过同样的问题。

我试过的

在 /var/www/vhosts/DOMAIN/conf/ 中,我使用 Virtuozzo 电源面板创建了文件 vhost.conf。下面是我放在 vhost.conf 中的代码:

尝试 1

<Directory /var/www/vhosts/DOMAIN/public>
<IfModule sapi_apache2.c>
        php_admin_value open_basedir none
</IfModule>
<IfModule mod_php5.c>
        php_admin_value open_basedir none
</IfModule>
</Directory>

尝试 2

<Directory /var/www/vhosts/DOMAIN/public>
    php_admin_value open_basedir none
</Directory>

我还重新启动了 httpd 服务。

文件夹结构

我的文件夹结构如下:

/var/www/vhosts/DOMAIN/application
/var/www/vhosts/DOMAIN/library
/var/www/vhosts/DOMAIN/public

任何帮助将非常感激。

4

2 回答 2

2

我认为您需要open_basedir为整个项目设置:

<Directory /var/www/vhosts/DOMAIN>
    php_admin_value open_basedir none
</Directory>

您还需要设置DocumentRoot为:

DocumentRoot "/var/www/vhosts/DOMAIN/public"

尽管。

于 2012-04-21T21:39:03.827 回答
1

我遇到了同样的问题并在没有将 open_basedir 设置为 none 的情况下解决了它。您可以通过在 Linux 中使用“:”和“;”将多个路径添加到 open_basedir 在 Windows 中。因此,如果您的警告中提到“realpath”,请将“realpath”添加到您的 open_basedir 设置或“realpath”的父目录中。例如像这样:

php_admin_value open_basedir "/srv/www/vhosts/domain.com/httpdocs:/tmp:/usr/share/php5/"

现在您的 open_basedir 配置了 3 个路径:

/srv/www/vhosts/domain.com/httpdocs
/tmp
/usr/share/php5

在我的情况下,zend 需要上述 3 的最后一条路径才能在我的系统上运行而不会发出警告。

另请注意,是否以“/”结束路径是有区别的!如果没有“/”,所有子文件夹都将包含在 open_basedir 中。看看这里:http ://www.php.net/manual/en/ini.core.php#ini.open-basedir

卢西安

于 2012-11-28T20:51:15.207 回答