我在服务器上部署Symfony3项目(Ubuntu 16.04,PHP 7.0.18)。
我使用VestaCP,创建symlinl public_shtml -> www/web
并将项目放在www
目录中。
我执行以下命令:
在错误日志中,我看到了这些消息:
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')
我做错了什么?
答案 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.tpl
和default.stpl
复制为新文件symfony.tpl
和symfony.stpl
,您可以在其中更改open_basedir
,DocumentRoot
和{{1}参数。如果你不这样做:每次为用户的网站添加/更新配置后,VestaCP都会使用默认模板用新生成的配置替换你当前的配置,你需要再次编辑它。