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
相关产品推荐
相关产品推荐

