我已经在我的 OpenSuse 13.2 操作系统中安装了 Lampp-x64-5.6.3。我构建了一个程序,它需要执行我从 OpenSuse Repo 本身安装的 qpdf。
好吧,当我运行命令(如下所示)时,我没有得到任何响应,也没有任何效果,但我能够在 /usr/bin/ 目录中执行其他二进制文件。
$execQuery = "/usr/bin/qpdf --decrypt --stream-data=uncompress --force-version=1.4 ".escapeshellarg('/opt/lampp/htdocs/test/test.pdf')." ". escapeshellarg('/opt/lampp/htdocs/test/temptest.pdf');
shell_exec($execQuery);
#OR
$execQuery = "/usr/bin/qpdf '/opt/lampp/htdocs/test/test.pdf' '/opt/lampp/htdocs/test/temptest.pdf'";
shell_exec($execQuery);
PHP safe_mode 已关闭,shell_exec、exec、系统等已启用。我仍然无法运行这个特定的二进制文件 (/usr/bin/qpdf)。
当我运行命令 echo 或 ls -l 或 dir 或 even skype 时,我得到了输出在 php shell_execute 函数中。
该文件的权限是:-rwxr-xr-x 1 root root 85248 Jun 18 10:31/usr/bin/qpdf
但是我可以通过操作系统的终端执行qpdf命令。它完美地创建了文件。
目录/opt/lampp/htdocs/test/对qpdf和apache/lampp都是可写的
我几乎尝试了各种论坛中提到的所有方法,但仍然无法让这个可执行文件运行该文件。
提前致谢。
更新:
按照建议尝试这个:
$command = "/usr/bin/qpdf --decrypt --stream-data=uncompress --force-version=1.4 ".escapeshellarg('/opt/lampp/htdocs/test/test.pdf')." ". escapeshellarg('/opt/lampp/htdocs/test/temptest.pdf');
shell_exec($command. " > /opt/lampp/htdocs/debug.log 2>&1");
记录错误!
......
/opt/lampp/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found
......
解决方案:
我只需要删除 /usr/lib/libstdc++.so.6 文件或重命名它即可。
在终端运行:
sudo mv /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.6___
最佳答案
我只需要删除/usr/lib/libstdc++.so.6 文件或重命名它即可。
在终端运行:
sudo mv/usr/lib/libstdc++.so.6/usr/lib/libstdc++.so.6___
关于php - 在php shell_execute中执行qpdf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31360737/