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

CentOS7.9双硬盘环境下home2站点无法通过PHP shell_exec调用ffmpeg求助

排查cPanel环境下home2目录站点无法通过PHP调用ffmpeg的问题

1. 对比PHP执行环境与SSH的PATH差异

shell_exec执行PHP时的环境变量PATH,和SSH登录用户后的PATH往往不同,cPanel默认会重置PHP运行时的环境变量。

  • 在home2站点创建测试脚本,输出当前PHP的PATH:
    <?php echo shell_exec('echo $PATH'); ?>
    
  • SSH登录该站点用户,执行echo $PATH,对比两者结果,确认ffmpeg所在路径(比如/usr/local/bin)是否在PHP的PATH列表中。

2. 尝试用ffmpeg绝对路径调用

先通过SSH执行which ffmpeg获取绝对路径(例如/usr/local/bin/ffmpeg),然后在PHP代码中直接使用绝对路径调用:

<?php echo shell_exec('/usr/local/bin/ffmpeg -version'); ?>

如果此方法生效,说明问题根源是PATH环境变量未包含ffmpeg路径。

3. 配置用户级环境变量

编辑home2站点用户的家目录配置文件(如/home2/[用户名]/.bashrc或/home2/[用户名]/.bash_profile),添加ffmpeg路径到PATH:

export PATH=$PATH:/usr/local/bin

执行source /home2/[用户名]/.bashrc使配置生效,注意部分cPanel的PHP-FPM模式可能不读取用户bash配置,需结合下一步操作。

4. 配置PHP-FPM环境变量

若站点使用PHP-FPM模式:

  • 登录cPanel,通过MultiPHP Manager确认站点使用的PHP版本,进入MultiPHP INI Editor选择对应版本,添加:
    env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/bin
    
  • 或者直接编辑对应PHP版本的FPM配置文件(如/opt/cpanel/ea-php74/root/etc/php-fpm.d/[用户名].conf),添加env[PATH]配置后,重启PHP-FPM服务:
    systemctl restart ea-php74-php-fpm
    

5. 检查cShell限制与终端权限

  • 在cPanel的Manage Shell中,确认该用户的Shell未设置为nologin或restricted shell,切换为bash或sh。
  • cPanel内置终端可能使用受限环境,若终端内无法执行ffmpeg,同样需要依赖绝对路径或调整环境变量。

6. 验证ffmpeg文件权限

检查ffmpeg二进制文件的全局执行权限:

ls -l /usr/local/bin/ffmpeg

确保权限为-rwxr-xr-x,若权限不足,执行:

chmod 755 /usr/local/bin/ffmpeg

同时确认home2目录及用户家目录权限为drwxr-xr-x,保证用户拥有访问权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:47:24