在lampp服务器上从php运行ffmpeg时找不到GLIBCXX_3.4.9

时间:2015-07-11 04:59:25

标签: php c++ c linux ffmpeg

我编写了一个php程序,使用ffmpeg从图像序列创建视频。

<?php
    $res = shell_exec("ffmpeg -framerate 50 -i image/image%d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4 2>&1");
    echo "$res";

当我运行它时,

它说GLIBCXX_3.4.15GLIBCXX_3.4.9GLIBCXX_3.4.11 找不到

  

ffmpeg:/opt/lampp/lib/libstdc++.so.6:版本`GLIBCXX_3.4.15&#39;不

     找到

(/usr/lib/i386-linux-gnu/libjack.so.0要求)ffmpeg:

     

/ opt / lampp / lib / libstdc ++。so.6:版本`GLIBCXX_3.4.9&#39;找不到

     

(/usr/lib/i386-linux-gnu/libzmq.so.3要求)ffmpeg:

     

/ opt / lampp / lib / libstdc ++。so.6:版本`GLIBCXX_3.4.11&#39;找不到

     

(/usr/lib/i386-linux-gnu/libopencv_core.so.2.4要求)ffmpeg:

     

/ opt / lampp / lib / libstdc ++。so.6:版本`GLIBCXX_3.4.9&#39;找不到

     

(/usr/lib/i386-linux-gnu/libopencv_core.so.2.4要求)

但是从终端,ffmpeg -framerate 50 -i image/image%d.png -c:v libx264 -r 30 -pix_fmt yuv420p out.mp4命令工作正常。 为什么php无法在终端找到库,它可以正常工作?我该怎么做才能解决php中的问题?提前谢谢。

2 个答案:

答案 0 :(得分:15)

从PHP脚本执行ffmpeg命令时,我也遇到了类似的问题。我通过从终端执行以下命令找到了解决方案。我在这里粘贴这个命令,所以有人可以从中得到帮助。

sudo mv /opt/lampp/lib/libstdc++.so.6 /opt/lampp/lib/libstdc++.so.6.orig

现在只需运行你的php脚本,希望它能运行。

答案 1 :(得分:0)

如果您尝试了上述所有方法(将名称更改为.orig / _old,将较新的版本复制到lib文件夹,在xampp中更改LD_LIBRARY_PATH),

但仍然无法解决此问题。试试这个对我最终有用的技巧:

1。在您的PHP文件的行下面添加。

var_dump(shell_exec("whoami"));

点击与您的PHP文件相关的网址后,您便可以在浏览器中找到用户名

2。在您的终端机

sudo vim /ect/sudoers

#in vim editor, add this line in your sudoers file
"username ALL=(ALL) NOPASSWD:ALL"
#change username to that found in step one 

3。将PHP文件中的exec cmd更改为

exec("sudo python3 urfilename.py")

问题的主要原因可能是root权限,因此,通过更改sudoers文件,可以解决该错误。