2014-04-22 126 views
0

one.sh了shell_exec不從外殼執行SH文件Inkscape的命令

#! bin/bash 
command="cp 357.svg 000.svg" 
echo "Executing Command"; 
exec $command; 

two.sh

#! bin/bash 
command="/usr/bin/inkscape -f 357.svg -e 357.png" 
echo "Executing Command"; 
exec $command; 

從外殼sh two.sh工作正常

但使用PHPshell_exec("sh two.sh")不執行

任何一個可以告訴它爲什麼不執行?

回答

1

嘗試:

echo shell_exec("sh two.sh 2>&1;") 

,看看輸出是什麼,也許它會給你一個權限被拒絕的錯誤。 也許還值得檢查你正在運行的用戶(可能類似www-data)

+0

警告:無法創建配置文件目錄(權限被拒絕)消息:無法創建配置文件目錄/var/www/.config/inkscape。消息:Inkscape將以默認設置運行,並且不會保存新設置。 (inkscape:..):libgnomevfs - 警告:無法創建〜/ .gnome2目錄:權限被拒絕緊急保存已激活!緊急保存完成。 Inkscape現在將關閉。如果您可以重現此崩潰,消息:錯誤:Inkscape遇到內部錯誤,現在將關閉。分段錯誤 – Urvish

+2

我不知道您是否可以在服務器上更改內容,但是消息很明確:inkscape想要創建一個配置目錄並且不允許。 爲了測試確實是快速和骯髒的: (須藤)chmod爲0777 /var/www/.config/inkscape 或者: 設置正確的目錄權限,使您的用戶(假設www數據)在該目錄可寫 – klapvee

+0

@klapvee謝謝你。從PHP腳本運行時,我遇到了相同的Inkscape錯誤消息。然後我以www-data的身份登錄並執行完全相同的命令,該命令產生了相同的警告,但它工作正常!*我得出結論:缺少的.gnome2目錄不會成爲問題。無論出於何種原因,添加它實際上確實修復了Inkscape崩潰。 (有關信息:默認情況下爲/var/www/.gnome2。爲確保您擁有正確的路徑,請檢查'strace inkscape --with-your-args'的輸出。) –