在php shell_execute中执行qpdf

时间:2015-07-11 19:02:11

标签: php linux file-permissions shell-exec opensuse

我在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,system等已启用。我仍然无法运行这个特定的二进制文件(/ usr / bin / qpdf)。

当我运行命令 echo ls -l <​​/ em>或 dir 甚至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写入

我已经尝试了各种论坛中提到的几乎所有方法,但仍然无法运行该文件。

提前致谢。

UPDATE:

正如所建议尝试的那样:

$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___

1 个答案:

答案 0 :(得分:0)

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

终端运行:

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