2014-10-09 286 views
0

我有一個編碼視頻的Python腳本,然後調用一個將新視頻上傳到保存箱的shell腳本。它從命令行工作正常,但我需要使其他人可以執行它,所以我有一個PHP腳本調用python腳本。運行一個PHP腳本,運行一個運行bash腳本的Python腳本,掛在bash上

我不希望PHP腳本永遠運行(它需要15-30分鐘才能完成),我只是想讓它啓動python腳本並完成。我想出了我需要做的事情,就像我說過的,它可以在命令行上運行。但是,當它通過PHP調用時,視頻會進行編碼,但文件永遠不會上傳。我可以看到dropbox腳本被啓動並被列爲一個使用一定百分比的CPU的進程,該百分比從未改變,似乎卡住/死亡。

命令看起來是這樣的,正在運行使用CMD()

script.py -options &>/logs/phptopython.log &

的shell腳本拉開帷幕使用POPEN

有什麼建議?

謝謝

+0

也許看到:http://php.net/manual/en/function.ignore-user-abort.php – Mike 2014-10-09 18:59:15

+2

Sup dawg,我聽說你喜歡腳本。 – BrenBarn 2014-10-09 19:03:51

+0

LOL @BrenBarn。您的評論讓我想起了https://github.com/ircmaxell/PHPPHP – Mike 2014-10-09 19:05:08

回答

0

聽起來這可能是一個權限問題。仔細檢查您嘗試上傳視頻的目錄的權限。如果你是在Linux上,你可以修改權限上像這樣的目錄:

chmod 755 /path/to/dir 

這給所有者的讀文件,寫和執行權限(7)。該組和其他用戶獲得讀取和執行權限(5)。

Apache可能以不同的用戶身份運行,而不是自己在bash中運行命令。一個快速測試,看看它是否是一個權限問題將是在該目錄上授予777。我不會這麼說 - 它只是一種快速確定權限是否是問題的方法。

如果腳本以777權限運行,您可以將目錄的所有者更改爲Apache運行時的用戶,或者將Apache用戶添加到目錄的組中並授予組寫入權限。

編輯: 我剛剛注意到你說你使用cmd(),所以我猜你是在Windows上。我的評論可能仍然是相關的,但chmod命令不適用於Windows。

+0

我在Linux上,我輸錯了,exec()是使用的PHP命令,而不是cmd()。這不是權限問題,目錄已經是777.另外www-data正在調用Python腳本,它調用ffmpeg將文件編碼到同一個目錄(所以如果它可以在那裏寫入文件,你會認爲它可以訪問它也是ulpoad)。 – Ryzone 2014-10-09 19:36:07

+0

好棒。您也可以嘗試檢查Apache錯誤日誌。也許它有一個錯誤,可以指向正確的方向。 Apache錯誤日誌通常位於/var/log/apache/error.log。 – 2014-10-09 19:39:59

+0

錯誤日誌中沒有任何內容。 FWIW也不會寫入命令中的日誌文件。 '&>/logs/phptopython.log&'當我通過cmd行運行它時,我確實得到了輸出。並且在webmin>進程中,兩個命令在幾個小時前仍然存在,相同的CPU%。 – Ryzone 2014-10-09 19:48:33