簡體   English   中英

從PHP調用的Shell腳本不起作用,但可以在命令行中使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM