GLIBCXX_3.4.9 在 lampp 服务器中 运行 来自 php 的 ffmpeg 时找不到
GLIBCXX_3.4.9 not found when running ffmpeg from php in lampp server
我编写了一个 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.15
, GLIBCXX_3.4.9
, GLIBCXX_3.4.11
找不到.
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not
found (required by /usr/lib/i386-linux-gnu/libjack.so.0) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
(required by /usr/lib/i386-linux-gnu/libzmq.so.3) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found
(required by /usr/lib/i386-linux-gnu/libopencv_core.so.2.4) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
(required by /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 中的问题?提前致谢。
我在从 PHP 脚本执行 ffmpeg 命令时也遇到了类似的问题。我通过从终端执行以下命令找到了解决方案。我将该命令粘贴到此处,以便有人从中获得帮助。
sudo mv /opt/lampp/lib/libstdc++.so.6 /opt/lampp/lib/libstdc++.so.6.orig
现在 运行 您的 php 脚本,希望它能起作用。
如果你已经尝试了以上所有方法(将名称更改为.orig/_old,将较新版本复制到lib文件夹,在xampp中更改LD_LIBRARY_PATH),
但还是没能解决这个问题。试试这个终于对我有用的技巧:
1.add PHP 文件中的行下方。
var_dump(shell_exec("whoami"));
单击与您的 PHP 文件相关的 url 后,您可以在浏览器中找到用户名
2.in 你的终端机
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.change PHP 文件中的 exec cmd 到
exec("sudo python3 urfilename.py")
您的问题的主要原因可能是 root 权限,因此通过更改您的 sudoers 文件,可能会解决该错误。
我编写了一个 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.15
, GLIBCXX_3.4.9
, GLIBCXX_3.4.11
找不到.
ffmpeg: /opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not
found (required by /usr/lib/i386-linux-gnu/libjack.so.0) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
(required by /usr/lib/i386-linux-gnu/libzmq.so.3) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found
(required by /usr/lib/i386-linux-gnu/libopencv_core.so.2.4) ffmpeg:
/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
(required by /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 中的问题?提前致谢。
我在从 PHP 脚本执行 ffmpeg 命令时也遇到了类似的问题。我通过从终端执行以下命令找到了解决方案。我将该命令粘贴到此处,以便有人从中获得帮助。
sudo mv /opt/lampp/lib/libstdc++.so.6 /opt/lampp/lib/libstdc++.so.6.orig
现在 运行 您的 php 脚本,希望它能起作用。
如果你已经尝试了以上所有方法(将名称更改为.orig/_old,将较新版本复制到lib文件夹,在xampp中更改LD_LIBRARY_PATH),
但还是没能解决这个问题。试试这个终于对我有用的技巧:
1.add PHP 文件中的行下方。
var_dump(shell_exec("whoami"));
单击与您的 PHP 文件相关的 url 后,您可以在浏览器中找到用户名
2.in 你的终端机
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.change PHP 文件中的 exec cmd 到
exec("sudo python3 urfilename.py")
您的问题的主要原因可能是 root 权限,因此通过更改您的 sudoers 文件,可能会解决该错误。