gpt4 book ai didi

php - unoconv 使用 www-data 从终端工作,而不是从 php 脚本也作为 www-data

转载 作者:可可西里 更新时间:2023-11-01 13:19:35 29 4
gpt4 key购买 nike

我在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');
}

它没有生成任何错误消息,也没有生成任何 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
)

请指教。

最佳答案

问题是我正在使用 Nginx 和 PHP-FPM。

在 Nginx 中,默认情况下未声明 PATH。

所以有2个解决方案。

1) 您在 Nginx 的 fastcgi 参数中声明它。

参见 here .

2) 在运行 unoconv 代码之前使用 putenv() 在脚本中声明它。

喜欢

putenv('PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/node/bin');

我还想补充一点,某种故障排除方法帮助我意识到了这个问题。参见 here .

关于php - unoconv 使用 www-data 从终端工作,而不是从 php 脚本也作为 www-data,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16748042/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com