Apache2.4+PHP-FPM环境下/opt/moddoc目录PHP文件无法执行配置问询
解决方案
无需迁移目录
你不需要将/opt/moddoc下的文件迁移到/var/www/html路径下,通过Apache的别名映射规则即可实现外部请求路径指向/opt/moddoc下的应用文件。
配置调整说明
所有修改都在Apache侧完成,无需调整php.ini配置:
1. 新增Apache站点配置
RHEL 8环境推荐在/etc/httpd/conf.d/目录下新建独立配置文件(如moddoc.conf),避免直接修改主httpd.conf文件,配置内容如下:
# 对外访问路径/myphpapp 映射到本地/opt/moddoc/myphpapp目录 Alias /myphpapp /opt/moddoc/myphpapp <Directory /opt/moddoc/myphpapp> # 开放目录访问权限 Require all granted Options FollowSymLinks AllowOverride None # 绑定PHP-FPM处理规则到该目录下的.php文件 <FilesMatch \.php$> # 对应UNIX套接字模式的php-fpm,默认RHEL8 php7.2-fpm监听路径为/run/php-fpm/www.sock SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost" # 如果你的php-fpm用TCP模式监听,替换为下面的配置 # SetHandler "proxy:fcgi://127.0.0.1:9000" </FilesMatch> </Directory>
你之前其他目录PHP无法执行的原因就是Apache默认仅给/var/www/html配置了PHP处理规则,其他目录没有绑定PHP-FPM的Handler,会直接返回源码或403错误。
2. 调整目录权限与SELinux规则
- 保证Apache和php-fpm的运行用户(默认都是apache)对/opt/moddoc有读和执行权限:
chown -R apache:apache /opt/moddoc chmod -R 750 /opt/moddoc # 如有上传、缓存等需要写入的子目录,单独赋予770权限
- RHEL8默认开启SELinux,需要给目录添加httpd访问的安全上下文:
semanage fcontext -a -t httpd_sys_content_t "/opt/moddoc(/.*)?" restorecon -Rv /opt/moddoc # 如有需要写入的子目录,单独标记为httpd_sys_rw_content_t上下文
3. 生效配置
检查Apache配置语法无误后重启服务:
httpd -t systemctl restart httpd php-fpm
前端调用方法
配置生效后,你在/var/www/html/myownstartingfile.html中直接请求路径/myphpapp/main.php,即可触发/opt/moddoc/myphpapp/main.php执行,调用逻辑和放在Web根目录下完全一致。
内容的提问来源于stack exchange,提问作者Brian Wexter
相关产品推荐
相关产品推荐

