日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php 怎么执行unoconv,web执行php调用exec(unoconv)命令失败解决方案

發布時間:2024/1/23 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php 怎么执行unoconv,web执行php调用exec(unoconv)命令失败解决方案 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本人環境:nginx?+?php-fpm

創建PHP文件如下:<?php

exec('unoconv?-f?pdf?/home/test.pptx',?$res,?$rc);

print($rc);

//?/home/test.pptx??是我的測試文件

//?exec有3個參數,第一個是要執行的命令,第二個是參數是一個數組,數組的值是由第一個命令執行后生成的,第三個參數執行的狀態,0表示成功,其他都表示失敗。

將該文件上傳服務器通過web中的url進行訪問后,打印exec的第三個參數rc為1,說明命令執行失敗,但確不知道原因

將代碼更改如下:<?php

exec('unoconv?-f?pdf?/home/test.pptx?2>&1',?$res,?$rc);

print($rc);

print($res);

使用 2>&1, 命令就會輸出shell執行時的錯誤到$res變量, 輸出該變量即可分析。

在次運行后,得到命令錯誤信息:0:?"Traceback?(most?recent?call?last):"

1:?"??File?"/usr/bin/unoconv",?line?1205,?in?"

2:?"????run()"

3:?"??File?"/usr/bin/unoconv",?line?1115,?in?run"

4:?"????office_environ(of)"

5:?"??File?"/usr/bin/unoconv",?line?202,?in?office_environ"

6:?"????os.environ['PATH']?=?realpath(office.basepath,?'program')?+?os.pathsep?+?os.environ['PATH']"

7:?"??File?"/usr/lib64/python2.7/UserDict.py",?line?23,?in?__getitem__"

8:?"????raise?KeyError(key)"

9:?"KeyError:?'PATH'"

這他niang是什么東西,貌似是python代碼出錯,最后有一個? "KeyError: 'PATH'"

此時在網上找了很多解決方案,嘗試無果,嘗試如下:

1,/usr/bin/unoconv 的執行權限改為777

2, /run/user/0/dconf? ?/run/user權限更改了 777

3, /ect/sudoers 增加了 :? wwwALL=(ALL)NOPASSWD: ALL

4,還更改了測試pptx文件權限為777

以上嘗試全部無果

最后在 github 上面找到一提問,從提問的回答中找到解決方案:

網頁地址:https://github.com/dagwieers/unoconv/issues/87#issuecomment-18800070%29

回答信息:centos?7.3?nginx?with?php?via?php-fpm,?the?env?in?php?is?cleaned?by?php-fpm

u?can?use?putenv?to?set?evn["PATH"]?in?php?code,?examples

putenv("PATH=/sbin:/bin:/usr/sbin:/usr/bin");

var_dump(shell_exec('unoconv?-vvvv?-f?pdf?-o?123.pdf?123.doc));

or?u?can?set?env?use?one?line?shell?cmd

var_dump(shell_exec('PATH=/sbin:/bin:/usr/sbin:/usr/bin'.'?unoconv?-vvvv?-f?pdf?-o?123.pdf?123.doc));

or?u?can?change?php-fpm.d/www.conf?to?pass?the?env?to?php,?add?this?line

clean_env?=?no

and?the?restart?php-fpm

systemctl?restart?php-fpm.service

發現和我的環境與問題是一致的,于是開始嘗試<?php

exec('PATH=/sbin:/bin:/usr/sbin:/usr/bin?unoconv?-f?pdf?/home/test.pptx?2>&1',?$res,?$rc);

print($rc);

print($res);

在次運行發現轉換成功

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

以上是生活随笔為你收集整理的php 怎么执行unoconv,web执行php调用exec(unoconv)命令失败解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。