首頁 > 後端開發 > php教程 > exec - php系統函數可以呼叫簡單指令,無法執行octave腳本?

exec - php系統函數可以呼叫簡單指令,無法執行octave腳本?

WBOY
發布: 2016-08-29 08:50:49
原創
1148 人瀏覽過

問題描述:

octave是一個相容matlab語法的GNU開源科學計算軟體。我寫了一段octave腳本,在開頭指定octave為解釋器#!/usr/bin/octave
在命令列下直接執行這段腳本,是可以產生我想要的圖片的。即使用 ./octavedemo.m arg1 arg2...

而現在我想用php的系統函數例如shell_exec()去執行這段指令,卻不能生效。
為了測試是不是權限問題,我試著用shell_exec()執行了簡單的ls -l等指令,是可以成功的:

<code>$test = shell_exec("ls -l");
echo $test;</code>
登入後複製
登入後複製

js是可以接收到並在控制台列印出結果的,所以應該不是系統函數執行權限的問題。

所以想問還可能是什麼樣的情況導致的?
生成圖片比較慢所以耗時太長嗎?我已經在php.ini裡面把max_excution_time設為600了,應該夠了吧;
還是說圖片太大了,不像簡單的文本,生成不了這麼大的?

如果能提供一些經驗,就非常感謝了!

更新(已解決):

原先我是在apache的預設html目錄下,新建了個demonstrate目錄,然後把php等檔案放在這個目錄裡面了,然後我只是進入了這個目錄,對裡面的所有檔案進行了chmod 777操作。
現在試著對demonstrate目錄也賦予了777權限,然後問題就解決了。應該是不對這個目錄賦予讀寫權限,就不能在裡面產生檔案的原因。
事實證明,還是要多想清楚每一步的邏輯才能不浪費時間,感謝回答的人!

回覆內容:

問題描述:

octave是一個相容matlab語法的GNU開源科學計算軟體。我寫了一段octave腳本,在開頭指定octave為解釋器#!/usr/bin/octave
在命令列下直接執行這段腳本,是可以產生我想要的圖片的。即使用 ./octavedemo.m arg1 arg2...

而現在我想用php的系統函數例如shell_exec()去執行這段指令,卻不能生效。
為了測試是不是權限問題,我試著用shell_exec()執行了簡單的ls -l等指令,是可以成功的:

<code>$test = shell_exec("ls -l");
echo $test;</code>
登入後複製
登入後複製

js是可以接收到並在控制台列印出結果的,所以應該不是系統函數執行權限的問題。

所以想問還可能是什麼樣的情況導致的?
生成圖片比較慢所以耗時太長嗎?我已經在php.ini裡面把max_excution_time設為600了,應該夠了吧;
還是說圖片太大了,不像簡單的文本,生成不了這麼大的?

如果能提供一些經驗,就非常感謝了!

更新(已解決):

原先我是在apache的預設html目錄下,新建了個demonstrate目錄,然後把php等檔案放在這個目錄裡面了,然後我只是進入了這個目錄,對裡面的所有檔案進行了chmod 777操作。
現在試著對demonstrate目錄也賦予了777權限,然後問題就解決了。應該是不對這個目錄賦予讀寫權限,就不能在裡面產生檔案的原因。
事實證明,還是要多想清楚每一步的邏輯才能不浪費時間,感謝回答的人!

php的shell_exec這個方法採用的是web的使用者權限~確定下你的那個腳本,web使用者有執行權限嗎?

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板