VestaCP:使用 app/autoload 时的 open_basedir 限制。php
VestaCP: open_basedir restriction while using app/autoload.php
我在服务器上部署了 Symfony3 项目(Ubuntu 16.04,PHP 7.0.18)。
我使用 VestaCP,创建 symlinl public_shtml -> www/web
并将项目放在 www
目录中。
我执行以下命令:
- git 克隆
- 作曲家安装
- setfacl(来自 Symfony 官方文档)
在错误日志中我看到消息:
PHP Warning: require(): open_basedir restriction in effect. File(/home/admin/web/project/www/app/autoload.php) is not within the allowed path(s): (/home/admin/web/project/public_shtml:/home/admin/tmp) in /home/admin/web/project/www/web/app.php on line 6
PHP Warning: require(/home/admin/web/project/www/app/autoload.php): failed to open stream: Operation not permitted in /home/admin/web/project/www/web/app.php on line 6
PHP Fatal error: require(): Failed opening required '/home/admin/web/project/www/web/../app/autoload.php' (include_path='.:/usr/share/php') in /home/admin/web/project/www/web/app.php on line 6
我做错了什么?
您需要更改 apache 配置中的 open_basedir
参数(/home/admin/conf/web/apache2.conf
和 /home/admin/conf/web/sapache2.conf
)以指向您新创建的文件夹 /home/admin/web/project/www
:
<Directory /home/admin/web/project/www/web>
AllowOverride All
Options +Includes -Indexes +ExecCGI
php_admin_value open_basedir /home/admin/web/project/www:/home/admin/tmp
php_admin_value upload_tmp_dir /home/admin/tmp
php_admin_value session.save_path /home/admin/tmp
</Directory>
VestaCP 使用 open_basedir
限制来进行更安全的默认配置。
此外,如果您计划向您的服务器添加更多网站,我建议您在路径 /usr/local/vesta/data/templates/web/apache2/
为您的 symfony 项目制作特殊的 apache 配置模板。您可以将默认模板 default.tpl
和 default.stpl
复制为新文件 symfony.tpl
和 symfony.stpl
,您可以在其中更改 open_basedir
、DocumentRoot
和 Directory
参数。如果您不这样做:每次为您的用户站点配置 adding/updating 后,VestaCP 将使用默认模板将您当前的配置替换为新生成的配置,您将需要再次编辑它。
我在服务器上部署了 Symfony3 项目(Ubuntu 16.04,PHP 7.0.18)。
我使用 VestaCP,创建 symlinl public_shtml -> www/web
并将项目放在 www
目录中。
我执行以下命令:
- git 克隆
- 作曲家安装
- setfacl(来自 Symfony 官方文档)
在错误日志中我看到消息:
PHP Warning: require(): open_basedir restriction in effect. File(/home/admin/web/project/www/app/autoload.php) is not within the allowed path(s): (/home/admin/web/project/public_shtml:/home/admin/tmp) in /home/admin/web/project/www/web/app.php on line 6
PHP Warning: require(/home/admin/web/project/www/app/autoload.php): failed to open stream: Operation not permitted in /home/admin/web/project/www/web/app.php on line 6
PHP Fatal error: require(): Failed opening required '/home/admin/web/project/www/web/../app/autoload.php' (include_path='.:/usr/share/php') in /home/admin/web/project/www/web/app.php on line 6
我做错了什么?
您需要更改 apache 配置中的 open_basedir
参数(/home/admin/conf/web/apache2.conf
和 /home/admin/conf/web/sapache2.conf
)以指向您新创建的文件夹 /home/admin/web/project/www
:
<Directory /home/admin/web/project/www/web>
AllowOverride All
Options +Includes -Indexes +ExecCGI
php_admin_value open_basedir /home/admin/web/project/www:/home/admin/tmp
php_admin_value upload_tmp_dir /home/admin/tmp
php_admin_value session.save_path /home/admin/tmp
</Directory>
VestaCP 使用 open_basedir
限制来进行更安全的默认配置。
此外,如果您计划向您的服务器添加更多网站,我建议您在路径 /usr/local/vesta/data/templates/web/apache2/
为您的 symfony 项目制作特殊的 apache 配置模板。您可以将默认模板 default.tpl
和 default.stpl
复制为新文件 symfony.tpl
和 symfony.stpl
,您可以在其中更改 open_basedir
、DocumentRoot
和 Directory
参数。如果您不这样做:每次为您的用户站点配置 adding/updating 后,VestaCP 将使用默认模板将您当前的配置替换为新生成的配置,您将需要再次编辑它。