iT邦幫忙

0

用網頁開啟php網頁執行系統指令失敗,在系統用指令執行php程式碼成功。

系統環境是 CentOS 7 + php7 + apache 2.4
有一個需求是要用程式將兩份PDF合併為一份,需要另外安裝pdftk和cpdf
pdfdk用snapd安裝。cpdf用opam安裝,惟opam安裝時可能是未指定路徑,造成由opam安裝的cpdf目錄在使用者目錄下。
不過這個問題也還好,編輯.bashrc定義一個指令直接連結cpdf的執行檔即可。

目前寫了一隻程式碼如下 :

<?
$cmd2="cpdf -merge /var/www/html/pdf/test1.pdf /var/www/html/pdf/test2.pdf AND -add-text '-%Page-' -font 'Times-Roman' -bottom 10 -o /var/www/html/pdf/test3.pdf";
system($cmd2);?>

已經試過,cpdf這行指令直接在系統執行可以產出test3.pdf。
目前是想要寫成指令用網頁執行該程式碼。
在系統中由php直接執行 :
/usr/bin/php -q /var/www/html/pdf/cpdf.php
成功產出 test3.pdf
由網頁瀏覽php網頁,產出test3.pdf失敗,查log也沒有相關訊息
試過修改檔案權限 > 777 | 擁有者 > apache ,失敗。
試過使用sudo或是直接用絕對路徑指向cpdf的執行檔執行,失敗

還請各位先進,能否提點一下?讓我能有繼續追查的方向。

感激不盡!

看更多先前的討論...收起先前的討論...
nansen iT邦新手 2 級 ‧ 2020-09-01 18:01:11 檢舉
selinux有關閉嗎? 查看看 /var/log/audit/audit.log
player iT邦大師 1 級 ‧ 2020-09-01 18:48:33 檢舉
你要不要打開PHP的錯誤訊息
這樣才比較容易分辨問題在哪裡?

error_reporting( -1 );
ini_set( 'display_startup_errors', 1 );
ini_set( 'display_errors', 1 );
snameless iT邦新手 4 級 ‧ 2020-09-01 21:08:26 檢舉
selinux有關。
錯誤訊息有打開,沒有任何資訊。
harrytsai iT邦新手 1 級 ‧ 2020-09-03 16:04:16 檢舉
我記得是apache這個群組的權限,不能執行內部指令,你上網找一下資料
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
咖咖拉
iT邦好手 1 級 ‧ 2020-09-01 18:01:50

apache的環境他是讀不到/var/www/html/的
你的路徑要改成pdf/test1.pdf
其他以此類推

cpdf沒用過
不確定可以用網頁驅動

snameless iT邦新手 4 級 ‧ 2020-09-01 21:08:40 檢舉

我試試看,感謝!

咖咖拉 iT邦好手 1 級 ‧ 2020-09-02 14:31:08 檢舉

昨天回的有錯誤
../../../pdf/test1.pdf 網頁也讀不到

你的PHP檔案要放到html/裡面
路徑改成pdf/test1.pdf

我要發表回答

立即登入回答