我知道这是一个奇怪的问题,可能是非常具体的,但我最近在一个共享主机服务上安装了ffmpeg
。虽然我可以从SSH控制台执行所有任务,但在PHP中进行完全相同的调用时,我得到了这个错误。
加载共享库时出现错误:libavdevice.so。无法打开共享对象文件:没有文件或目录
它在PuTTY中做同样的事情,直到我用这行更新~/.bash_profile
:
export LD_LIBRARY_PATH=/home/searay330/ffmpeg/lib
PHP不使用~/.bash_profile
,还是有不同的文件需要更新?关于这个话题的任何信息都非常感谢,谢谢。
您需要将其放在.bashrc
中。.bash_profile
仅在使用交互式登录shell时读取,但.bashrc
在Bash以交互方式启动但不是登录shell时读取。更多信息请看这里。因此,您不能真正使用.bashrc
或.bash_profile
。您需要在调用shell_exec()
之前在PHP中设置环境变量。
<?php
putenv('LD_LIBRARY_PATH=/home/searay330/ffmpeg/lib');
shell_exec('...');