You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony 6.2生产环境部署遇polyfill-mbstring权限拒绝错误求助

Symfony 6.2部署权限拒绝问题

在搭载Apache2的生产服务器部署Symfony 6.2项目,服务器已有旧版Symfony项目,通过ondrej php源安装了PHP8.2及相关模块。部署Git项目并执行composer install后,配置虚拟主机后出现权限拒绝错误:无法打开/var/www/project/vendor/symfony/polyfill-mbstring/bootstrap.php,本地Ubuntu/Apache2环境相同配置可正常运行。

服务器信息

Server version: Apache/2.4.41 (Ubuntu)

虚拟主机配置(project.conf)

<virtualHost *:80>

  ServerAdmin admin@mysterty.com
  ServerName project.mysterty.com
  DirectoryIndex index.php

  DocumentRoot "/var/www/project/public"
  <Directory "/var/www/project/public">
                AllowOverride All
                Order Allow,Deny
                Allow from All
                Require all granted

                <IfModule mod_negotiation.c>
                        Options -MultiViews
                </IfModule>

                <IfModule mod_rewrite.c>
                        Options +FollowSymlinks

                        RewriteEngine On
                        RewriteCond %{REQUEST_URI}::$0 ^(/.+)/(.*)::\2$
                        RewriteRule .* - [E=BASE:%1]

                        RewriteCond %{HTTP:Authorization} .+
                        RewriteRule ^ - [E=HTTP_AUTHORIZATION:%0]

                        RewriteCond %{ENV:REDIRECT_STATUS} =""
                        RewriteRule ^index\.php(?:/(.*)|$) %{ENV:BASE}/$1 [R=301,L]
                        RewriteCond %{REQUEST_FILENAME} !-f
                        RewriteRule ^ %{ENV:BASE}/index.php [L]
                </IfModule>

                <IfModule !mod_rewrite.c>
                        <IfModule mod_alias.c>
                                # 当mod_rewrite不可用时,临时重定向首页到前端控制器,确保网站及生成链接可正常使用
                                RedirectMatch 307 ^/$ /index.php/
                                # 不可使用RedirectTemp替代
                        </IfModule>
                </IfModule>

  </Directory>

    <FilesMatch \.php$>
      # Apache 2.4.10及以上版本,使用SetHandler将PHP作为FastCGI进程服务器运行
      SetHandler "proxy:unix:/run/php/php8.2-fpm.sock|fcgi://localhost"
    </FilesMatch>

  ErrorLog ${APACHE_LOG_DIR}/project_error.log
  CustomLog ${APACHE_LOG_DIR}/project_access.log combined

</VirtualHost>

错误日志

[Tue Apr 11 11:49:40.112857 2023] [proxy_fcgi:error] [pid 3184524] [client 194.38.23.179:63349] AH01071: Got error 'PHP message: PHP Warning:  require(/var/www/project/vendor/composer/../symfony/polyfill-mbstring/bootstrap.php): Failed to open stream: Permission denied in /var/www/project/vendor/composer/autoload_real.php on line 78; PHP message: PHP Fatal error:  Uncaught Error: Failed opening required '/var/www/project/vendor/composer/../symfony/polyfill-mbstring/bootstrap.php' (include_path='.:/usr/share/php') in /var/www/project/vendor/composer/autoload_real.php:78
Stack trace:
#0 /var/www/project/vendor/composer/autoload_real.php(61): composerRequiree6ce3b729b7a527d4ebd0a97b86ba908()
#1 /var/www/project/vendor/autoload.php(7): ComposerAutoloaderInite6ce3b729b7a527d4ebd0a97b86ba908::getLoader()
#2 /var/www/project/vendor/autoload_runtime.php(5): require_once('...')
#3 /var/www/project/public/index.php(5): require_once('...')
#4 {main}
  thrown in /var/www/project/vendor/composer/autoload_real.php on line 78'

解决方案

1. 修正文件与目录权限

Apache/PHP-FPM进程默认以www-data用户运行,确保项目目录及文件对该用户有读取权限:

  • 递归设置目录权限为755,文件权限为644:
sudo chmod -R 755 /var/www/project
sudo chmod -R 644 /var/www/project/*
  • 修正目录及文件的所有者:
sudo chown -R www-data:www-data /var/www/project

2. 验证PHP-FPM运行用户

确认PHP8.2-FPM的运行用户是否为www-data,查看配置文件:

cat /etc/php/8.2/fpm/pool.d/www.conf | grep user

若显示user = www-data则正常,否则修改配置后重启PHP-FPM:

sudo systemctl restart php8.2-fpm

3. 检查SELinux状态(若启用)

如果服务器启用了SELinux,可能会阻止PHP访问vendor目录,临时关闭验证:

sudo setenforce 0

若问题解决,需配置SELinux规则允许访问:

sudo chcon -R -t httpd_sys_rw_content_t /var/www/project/vendor

4. 重新执行Composer安装

确保composer install以正确用户权限执行,避免生成的文件权限异常:

sudo -u www-data composer install --no-dev -o

内容的提问来源于stack exchange,提问作者mysterty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 04:45:03