【问题标题】:PHP to access run shell scriptPHP访问运行shell脚本
【发布时间】:2021-05-13 23:49:18
【问题描述】:

我有这个基本上运行 shell 脚本的 PHP 脚本。 shell 脚本采用 python 文件名 main.py 并在输出文件移动到不同的文件夹后提供输出并将其存储在文件中。 我的 PHP 代码:

<?php
if ($_GET['run']) {
  # This code will run if ?run=true is set.
  exec("/home/ubuntu/python/script.sh");
}
?>

<!-- This link will add ?run=true to your URL, myfilename.php?run=true -->
<a href="?run=true">Click Me!</a>

Myscript 代码是这样的:

#!/bin/bash
/usr/bin/python3 /home/ubuntu/python/main.py > /home/ubuntu/python/output/mainOut
mv /home/ubuntu/python/main.py /home/ubuntu/python/outputMain

当我使用命令运行脚本时,我的脚本运行良好,但使用 PHP 时,它给了我权限被拒绝错误。我尝试更改用户名或将 sudo 添加到脚本,但它不起作用。任何建议都会有所帮助。 这是我的错误日志:

mv:无法将“/home/ubuntu/python/main.py”移动到“/home/ubuntu/python/outputMain/main.py”:权限被拒绝

【问题讨论】:

  • 您的 Apache 可能以在该目录中没有写入权限的单独用户身份运行。您可以尝试将文件夹上的组更改为Apache的组并将权限更改为775。

标签: python php ubuntu


【解决方案1】:

快速而肮脏的解决方法:sudo chmod 777 /home/ubuntu/python -R

如果你想正确解决它,这是我的想法:

  • 首先检查apache/nginx的运行用户和组

  • 然后检查它对此类文件/文件夹的权限(这不是必需的,但它可以更具体地显示问题)

  • 最后更改 nginx-user 的组,例如 usermod -aG GROUP USER 然后 sudo chmod 775 DIR -R(或者您可以更精确地设置权限)

777775 的区别是:777 使您服务器上的任何用户都可以编辑该文件,而“775”只允许所有者和组成员编辑它。

【讨论】:

  • 非常感谢,我确实尝试从 apache 和我的主文件夹更改用户,但它不起作用。然后我在每个文件夹和文件上运行 chmodd 77 它让我得到输出但它没有移动文件。你的命令“sudo chmod 777 /home/ubuntu/python -R”就像魅力一样。我只是缺少让整个事情正常工作的 -R 。谢谢:)
【解决方案2】:

如果我没有错,您需要在 .sh 上执行 sudo chmod 755 或 777,仅此而已。

【讨论】:

    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 2012-03-28
    • 1970-01-01
    • 2011-07-27
    • 2023-04-03
    • 2016-10-03
    • 1970-01-01
    相关资源
    最近更新 更多