為什麼用exec執行一個命令時,在指令碼內執行不成功,放到伺服器命令列就可以了,我在/etc/sudoers也做了配置
我首先在/etc/sudoers做了如下配置
接著重啟了下apache伺服器
在tp架構內寫到
exec('/usr/bin/unoconv --server localhost --port 8100 -o /usr/local/webserver/www/server/Exam/Public/Uploads/Resource/transform/document/201309/52419a788a553.pdf -f pdf /usr/local/webserver/www/server/Exam/Public/Uploads/Resource/untransform/document/201309/52419a788a553.doc');
運行了下,沒有效果,轉碼不成功,把代碼直接拿出來就可以執行。
同時,我又把轉碼的部分寫到一個shell指令碼裡
#!/bin/sh
turnCode() {
local pdf=`echo $1 | cut -d: -f1`;
local file=`echo $1 | cut -d: -f2`;
echo $pdf;
echo $file;
`/usr/bin/unoconv --server localhost --port 8100 -o $pdf -f pdf $file`
}
action="$1"
setting="$2"
case $action in
turnCode)
turnCode "$setting"
;;
*)
;;
esac
通過exec調用
exec("sudo ./bash turnCode $save_path1:$file_path1", $out, $status);
結果仍舊是無法轉碼,哪位過來人煩請指點下,不甚感激!!! shell
分享到:
------解決方案--------------------
命令列時,使用的是你的帳號的許可權。而指令碼則可以不同,完全由該指令碼的擁有者或建立者的帳號許可權控制。