[英]PHP Mail function doesn't work from command line but works when called from www
[英]Shell script called from PHP does not work, but it works in command line
我想通過從PHP調用的shell腳本復制文件。 但是cp命令無法正常工作。
我的系統如下:Linux:Ubuntu MATE 16.01,Apache2(端口80),django(端口8000),php(端口80)
Shell腳本如下所示:
#!/bin/sh
cp /var/www/html/aaa.html /home/user/test/aaa.html
aaa.html是django上的網頁,由php保存在/ var / www / html /下。 我在aaa.html上調用php,並上傳aaa.html。 之后,我在php上執行上述shell腳本。
當我在命令行(SSH連接)中輸入“ cp /var/www/html/aaa.html /home/user/test/aaa.html”時,即使django的運行服務器正在運行,它也可以工作並且aaa.html也會更新。 但是,當我在shell腳本中執行命令時,不會更新aaa.html。
如何通過PHP調用的shell腳本更新aaa.html? 我認為如果可以殺死runserver,則aaa.html將被更新。 雖然從shell腳本調用的命令kill也不起作用。 反正有做嗎?
謝謝。
通常對於這些類型的問題,最好有更多的信息,例如給出的錯誤。 但是這十分之九是許可問題。
通過SSH執行此操作時,將以您用來登錄的用戶身份完成操作。顯然,該用戶具有更改此文件的權限。
當PHP嘗試執行此操作時,通常是由用於Web服務器的用戶完成的(例如:www-data)。 您需要確保該用戶對該文件具有權限。
您可以使用Chmod來執行此操作,這將更改文件權限:
chmod g+w <myfile>
adduser www-data(or the webserver user) <the group belonging to the file>
這將更改允許組寫入的權限,並將用戶添加到文件所屬的組。
注意:可能通過ssh更改/創建此文件,該文件屬於您的用戶,而不是使用Web服務器的用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.