我在使用带有 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)或类似的东西并不相同。
以下是您可以采取哪些措施来搜索该问题的示例:
尝试调用set
或setenv
获取变量列表。
创建一个基本脚本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');