我试图从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)
答案 0 :(得分:5)
版本`GLIBCXX_3.4.9'找不到
问题是在这种环境中,你使用的/opt/lampp/lib/libstdc++.so.6
过于陈旧,并没有定义`GLIBCXX_3.4.9&#39}。版本
如果我直接通过终端执行命令,一切正常。
在这种情况下,您可能正在使用/usr/lib/libstdc++.so.6
,这显然已经足够新了。
可能的解决方案:
/opt/lampp/lib/libstdc++.so.6
并在任何地方使用/usr/lib/libstdc++.so.6
(libstdc ++。so.6应该是向后兼容的,所以理论上应该没有理由使用旧版本。)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文件,可以解决该错误。