gpt4 book ai didi

php - 从 PHP 调用的 Shell 脚本不起作用,但它在命令行中起作用

转载 作者:太空宇宙 更新时间:2023-11-04 10:18:34 25 4
gpt4 key购买 nike

我想通过从 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”时,它会工作并且 aaa.html 会更新,即使 django 的运行服务器是运行不足。但是,当我在 shell 脚本中执行命令时,aaa.html 不会更新。

如何通过 PHP 调用的 shell 脚本更新 aaa.html?我想如果我能杀死 runserver,aaa.html 就会更新。虽然从 shell 脚本调用的命令 kill 也不起作用。有办法吗?

谢谢。

最佳答案

通常对于这类问题,最好能提供更多信息,例如给出的错误信息。但是 10 次中有 9 次是权限问题。

当您通过 SSH 执行此操作时,它是以您用于登录的用户身份完成的。显然,此用户有权更改此文件。

当 PHP 尝试执行此操作时,这通常由用于 Web 服务器(例如:www-data)的用户完成。您需要确保该用户对该文件具有权限。

您可以使用更改文件权限的 Chmod 执行此操作:

chmod g+w <myfile>
adduser www-data(or the webserver user) <the group belonging to the file>

这一个更改权限以允许组写入,并将用户添加到文件所属的组。

注意:可能通过 ssh 更改/创建此文件,它属于您的用户而不是使用网络服务器的用户。

关于php - 从 PHP 调用的 Shell 脚本不起作用,但它在命令行中起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44942883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com