php shell命令错误GLIBCXX_3.4.9未找到

时间:2013-12-22 11:49:53

标签: php linux ubuntu glibc libreoffice

我试图从php执行shell命令将文件转换为pdf,但是我收到了这个错误 有人可以详细解释我如何解决它吗? 我在linux上不太好(
如果我直接通过终端执行命令一切正常。

    /usr/lib/libreoffice/program/oosplash: /opt/lampp/lib/libstdc++.so.6:
    version `GLIBCXX_3.4.9' not found 
    (required by /usr/lib/libreoffice/program/../ure-link/lib/libuno_sal.so.3)

2 个答案:

答案 0 :(得分:5)

  

版本`GLIBCXX_3.4.9'找不到

问题是在这种环境中,你使用的/opt/lampp/lib/libstdc++.so.6过于陈旧,并没有定义`GLIBCXX_3.4.9&#39}。版本

  

如果我直接通过终端执行命令,一切正常。

在这种情况下,您可能正在使用/usr/lib/libstdc++.so.6,这显然已经足够新了。

可能的解决方案:

  1. 删除/opt/lampp/lib/libstdc++.so.6并在任何地方使用/usr/lib/libstdc++.so.6(libstdc ++。so.6应该是向后兼容的,所以理论上应该没有理由使用旧版本。)
  2. 在调用LD_LIBRARY_PATH之前在PHP中取消设置oosplash,因此它使用较新的库。

答案 1 :(得分:0)

尝试使用此方法https://stackoverflow.com/a/63443384/12099812

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文件,可以解决该错误。