【问题标题】:VestaCP: open_basedir restriction while using app/autoload.phpVestaCP:使用 app/autoload.php 时的 open_basedir 限制
【发布时间】:2017-07-08 05:52:05
【问题描述】:

我在服务器(Ubuntu 16.04,PHP 7.0.18)上部署 Symfony3 项目。 我使用 VestaCP,创建 symlinl public_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)在/ home/admin/web/project/www/web/app.php 在第 6 行

PHP 警告:需要(/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' (include_path='.:/usr/share/php' ) 在第 6 行的 /home/admin/web/project/www/web/app.php 中

我做错了什么?

【问题讨论】:

标签: php symfony symfony-3.3 vesta


【解决方案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_basedirDocumentRootDirectory 参数。如果您不这样做:每次为您的用户站点添加/更新配置后,VestaCP 都会使用默认模板将您当前的配置替换为新生成的配置,您需要再次对其进行编辑。

【讨论】:

    猜你喜欢
    • 2012-05-26
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-02
    • 1970-01-01
    • 2020-05-21
    相关资源
    最近更新 更多