VestaCP:使用app / autoload.php时open_basedir限制

时间:2017-07-08 05:52:05

标签: php symfony symfony-3.3 vesta

我在服务器上部署Symfony3项目(Ubuntu 16.04,PHP 7.0.18)。 我使用VestaCP,创建symlinl public_shtml -> www/web并将项目放在www目录中。

我执行以下命令:

  • git clone
  • composer install
  • setfacl(来自官方Symfony文档)

在错误日志中,我看到了这些消息:

  

PHP警告:require():open_basedir限制生效。文件(/home/admin/web/project/www/app/autoload.php)不在允许的路径中:(/ home / admin / web / project / public_shtml:/ home / admin / tmp)/第6行的home / admin / web / project / www / web / app.php

     

PHP警告:require(/home/admin/web/project/www/app/autoload.php):无法打开流:/ home / admin / web / project / www / web / app中不允许操作。第6行的PHP

     

PHP致命错误:require():无法打开所需的' / home / admin / web / project / www / web /../ app / autoload.php'第6行的/home/admin/web/project/www/web/app.php中的(include_path ='。:/ usr / share / php')

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您需要在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.tpldefault.stpl复制为新文件symfony.tplsymfony.stpl,您可以在其中更改open_basedirDocumentRoot和{{1}参数。如果你不这样做:每次为用户的网站添加/更新配置后,VestaCP都会使用默认模板用新生成的配置替换你当前的配置,你需要再次编辑它。