1

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

我执行以下命令:

  • git 克隆
  • 作曲家安装
  • setfacl(来自 Symfony 官方文档)

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

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

PHP警告:需要(/home/admin/web/project/www/app/autoload.php):无法打开流:在线/home/admin/web/project/www/web/app.php中不允许操作6

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

我做错了什么?

4

1 回答 1

1

您需要更改open_basedirapache (/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限制来进行更安全的默认配置。

此外,如果您打算向服务器添加更多网站,我建议您在 path 为您的 symfony 项目制作特殊的 apache 配置模板/usr/local/vesta/data/templates/web/apache2/。您可以复制默认模板default.tpldefault.stpl作为新文件symfony.tpl以及symfony.stpl可以更改open_basedir的位置DocumentRootDirectory参数。如果您不这样做:每次为您的用户站点添加/更新配置后,VestaCP 将使用默认模板将您当前的配置替换为新生成的配置,您需要再次编辑它。

于 2017-07-08T08:12:17.607 回答