在php shell中执行qpdf

在php shell中执行qpdf,php,linux,file-permissions,shell-exec,opensuse,Php,Linux,File Permissions,Shell Exec,Opensuse,我已经在OpenSuse 13.2操作系统中安装了LAMP-x64-5.6.3。我构建了一个程序,该程序需要执行我从OpenSuse Repo本身安装的qpdf 当我运行这些命令(如下所示)时,我没有得到任何响应&什么都不起作用,而我能够执行/usr/bin/目录中的其他二进制文件 $execQuery = "/usr/bin/qpdf --decrypt --stream-data=uncompress --force-version=1.4 ".escapeshellarg('/op

我已经在OpenSuse 13.2操作系统中安装了LAMP-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安全模式,启用shell_exec、exec、system等。我仍然无法运行这个特定的二进制文件(/usr/bin/qpdf)

在php shell_execute函数中运行echo、ls-l、dir甚至skype命令时,我得到了输出。 该文件的权限为:
-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___

sudo mv/usr/lib/libstdc++.so.6/usr/lib/libstdc++.so.6_uuuuu

我只需删除/usr/lib/libstdc++.so.6文件或重命名它

运行终端:

sudo mv /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.6___

sudo mv/usr/lib/libstdc++.so.6/usr/lib/libstdc++.so.6___

正如我提到的,我已经测试了所有在线找到的方法,其中包括您标记为重复的问题。什么都没用。@mario我就是这么做的:$command=“/usr/bin/qpdf--decrypt--stream data=uncompress--force version=1.4”。escapeshellarg('/opt/lampp/htdocs/test/test.pdf')。“”。escapeshellarg('/opt/lampp/htdocs/test/tentest.pdf');shell_exec($command.>/home/username/debug.log 2>&1”);什么也没发生。未创建任何日志文件。但是日志是在我使用TerminalIf时生成的如果你无法发现错误消息,那么这里没有人能够提供帮助。(你只会得到猜测的答案,没有具体的调查。SuSE发行版最常见的猜测是:SELinux当然,也可以查看系统日志。)@mario先生,你救了我的命。我所做的只是从/opt/lampp/lib/中删除libstdc++.so.6。这个文件造成了麻烦。我相信总有一天会有人找到解决这个问题的办法。我只是把解决方案留在这里。:)再次感谢这个问题还是有点太模糊了。几乎没有人会无意中用谷歌搜索它。但是,如果您现在有具体的错误消息,请更新问题。并将解决方案总结为明天的自我回答。如果你能列出你的调试步骤和最终修复,那么它对未来的用户肯定是有用的。正如我提到的,我已经测试了所有在线找到的方法,其中包括你标记为重复的问题。什么都没用。@mario我就是这么做的:$command=“/usr/bin/qpdf--decrypt--stream data=uncompress--force version=1.4”。escapeshellarg('/opt/lampp/htdocs/test/test.pdf')。“”。escapeshellarg('/opt/lampp/htdocs/test/tentest.pdf');shell_exec($command.>/home/username/debug.log 2>&1”);什么也没发生。未创建任何日志文件。但是日志是在我使用TerminalIf时生成的如果你无法发现错误消息,那么这里没有人能够提供帮助。(你只会得到猜测的答案,没有具体的调查。SuSE发行版最常见的猜测是:SELinux当然,也可以查看系统日志。)@mario先生,你救了我的命。我所做的只是从/opt/lampp/lib/中删除libstdc++.so.6。这个文件造成了麻烦。我相信总有一天会有人找到解决这个问题的办法。我只是把解决方案留在这里。:)再次感谢这个问题还是有点太模糊了。几乎没有人会无意中用谷歌搜索它。但是,如果您现在有具体的错误消息,请更新问题。并将解决方案总结为明天的自我回答。如果您可以列出调试步骤和最终修复,那么它对未来的用户肯定是有用的。