Ubuntu 中的 PHP shell_exec()

Ubuntu 中的 PHP shell_exec()

我在使用带有 libreOffice 的 ubuntu。我已安装unoconv将文件转换*.odp*.pdf。当我从终端运行命令时unoconv -f pdf myfile.odp,它运行良好。我想使用 PHPshell_exec()方法做同样的事情。因此,我编写了以下代码:

$output = shell_exec('unoconv -f pdf test.odp 2>&1');
echo $output;

但它显示以下错误:

/usr/bin/python: /opt/lampp/lib/libz.so.1: no version information available (required by /usr/bin/python) 
Traceback (most recent call last): File "/usr/bin/unoconv", line 24, in import uno,
unohelper File "/usr/lib/python2.7/dist-packages/uno.py", line 34, in import pyuno SystemError: dynamic module not initialized properly

我怎么解决这个问题?

提前致谢。

答案1

Apach 可能被配置为不允许调用某些命令/库...

但是也许环境变量(例如 $PATH...)对于您的用户和 Apach 用户(www-data)或类似的东西并不相同。

以下是您可以采取哪些措施来搜索该问题的示例:

尝试调用setsetenv获取变量列表。

创建一个基本脚本callset.sh

#!/bin/bash
set

(不要忘记chmod +x callset.sh给予执行权限):

然后bash从 PHP 调用此脚本:

$output = shell_exec ('/your/dir/callset.sh 2>&1');
echo $output

或者

exec ("/your/dir/callset.sh", $output, $exitstatus);
print_r ($output);

然后用您自己的电话检查差异set

最后提供缺失的变量,如下所示:

$output = shell_exec('PATH=aaa:bbb:ddd unoconv -f pdf test.odp 2>&1');

相关内容