Kim*_*cks 6 php pdf shell ubuntu uno
我在php中编写了以下函数
public static function convert($originFilePath, $outputDirPath, $toFormat)
{
$command = 'echo $PATH & UNO_PATH=/usr/lib/libreoffice unoconv --format %s --output %s %s';
$command = sprintf($command, $toFormat, $outputDirPath, $originFilePath);
exec($command, $output, $result_var);
return compact('output', 'result_var', 'outputDirPath', 'originFilePath', 'toFormat');
}
Run Code Online (Sandbox Code Playgroud)
它没有生成任何错误消息,也没有生成任何pdf文件.
在终端中,当我直接将unoconv作为www-data运行时,我没有任何问题.
这是我执行后的结果:
2013-05-26 03:05:30 Error: Array
(
[output] => Array
(
[0] => /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
)
[result_var] => 1
[outputDirPath] => /var/virtual/storyzer.com/cake-json/ltequotationapp/webroot/outputfiles/Excel/2
[originFilePath] => /var/virtual/storyzer.com/cake-json/ltequotationapp/webroot/outputfiles/Excel/2/dsadas.xlsx
[toFormat] => pdf
)
Run Code Online (Sandbox Code Playgroud)
请指教.
有关可能的解决方案,请参阅此处。
摘自帖子...
这就是我通过在 Cent OS 6.2(unoconv 版本 0.6 和 LibreOffice 3.4.5.2)上运行的 apache / php 代码使 unoconv 工作的方法:(这只是一个解决方法 - 我不知道根本原因)
将 apache 用户从 /sbin/nologin 更改为 /bin/bash (这是在 /etc/passwd 文件中完成的) 添加新用户 unoconv 添加新文件 /etc/sudoers.d/unoconv ,其中包含以下内容:
apache ALL=(unoconv) NOPASSWD: /usr/bin/unoconv (请注意,我的 unoconv 程序位于此位置 /usr/bin/unoconv - 您可以使用 which unoconv 找到它)
使用 visudo 注释掉以下行(通过在行开头添加 # )
#默认要求
重新启动 sshd 和 httpd 服务
使用 php exec() 函数运行 unoconv (您需要更改输入文件名和输出目录):
exec('sudo -u unoconv /usr/bin/unoconv -f pdf -o 银行生成的 Teacher_bulk_upload.csv');
希望这对你有用
| 归档时间: |
|
| 查看次数: |
3722 次 |
| 最近记录: |