【问题标题】:php web page not executing scriptphp网页不执行脚本
【发布时间】:2021-11-30 20:10:52
【问题描述】:

我对 php 很陌生,尽管有一些“diy”编码经验,但我基本上还是个新手!因此,我有一个非常简单的问题......

基本上,我使用了一个装有 Raspberry Pi OS 的树莓派,在车上为长途旅行的孩子们创建了一个迷你媒体服务器。但是,当汽车熄火时,它会立即切断树莓派的电源,这基本上不是问题,但最近损坏了我已经修复的系统。

但正因为如此,我决定添加一个小脚本,允许连接的设备打开网页并单击按钮在切断电源之前关闭 pi。我使用 lighttpd 作为 Web 服务器,并且当我输入 IP 地址并且存在按钮时,我有基本的工作意思是 index.php 页面加载。我的问题是,当我点击按钮时,不是正在执行脚本,而是将脚本的内容打印在屏幕上?!!

要添加,我已按照以下链接中列出的解决方案进行操作: https://superuser.com/questions/829243/how-to-shut-down-a-server-from-the-webinterface

此外,我已将脚本更改为 bash 和 PHP,但未成功(结果相同)。我还将索引从基本的 HTML 页面更改为 PHP 脚本。目前,以下是我用来生成按钮的脚本:

<?PHP

?><!DOCTYPE html>
<html lang="en">
  <body>
    <form method="post" action="shutdown.sh">
        <input type="submit" value="Submit" name="Submit">
    </form>
  </body>
</html>

脚本是:


#!/bin/bash
echo $("sudo shutdown now");

www-data是visudo中拥有root权限的用户

如前所述,bash 脚本已从原始 python 示例中编辑,我尝试了 PHP...

请注意:这两个文件都在同一个目录中,但我确实将它们分隔在一个用于关闭脚本的子目录中(如示例中所示)...

感谢所有帮助!

【问题讨论】:

  • 您是否已将您的网络服务器配置为执行.sh 脚本?您可能需要将其放在 cgi-bin 目录中。
  • 脚本也需要权限才能执行。使用 cgi-bin 时,您也必须为这些脚本设置 PATH。
  • 感谢您的建议(很可能证明是正确的)。但是,我有其他 bash 和 PHP 脚本运行成功吗?我想知道这是否与不在网络根目录的顶级目录中有关? (我有一个从中运行此页面的子文件夹?)

标签: php bash script


【解决方案1】:

您的网络服务器可能未配置为执行 shell 脚本。

但是,您提到您也尝试过 php 版本的脚本。

我认为您的网络服务器未配置为执行 php 脚本。如果显示&lt;?PHP ?&gt; 配置不正确,请点击浏览器中的按钮 ctrl+u 或 cmd+u 检查页面来源。

你不写你安装了哪个操作系统。但也许这个指南会帮助你https://wiki.ubuntu.com/Lighttpd+PHP 或者这个答案https://raspberrypi.stackexchange.com/questions/1164/how-to-install-lighttpd-with-php

【讨论】:

    【解决方案2】:

    我不能完全说出什么是有效的,因为我已经做了一些进一步的事情。我不相信 PHP 和 bash 脚本的服务器执行是问题,因为我之前更改了这两个文件的权限。然而这并非不可能,因此对于任何有类似问题的人来说,以下是值得尝试的:

    更改目录所有者和组 sudo chown www-data:www-data /var/www

    允许组写入目录 sudo chmod 775 /var/www

    将 pi 用户添加到 www-data 组 sudo usermod -a -G www-data pi

    完成此操作后,以下是我实际工作的代码:

    index.html:

    <html lang="en">
      <body>
        <form method="post" action="shutdown.php">
            <input type="submit" value="Submit" name="Submit">
        </form>
      </body>
    </html>
    

    shutdown.php:

    
    echo shell_exec("sudo shutdown -h now");
    
    ?>```
    
    
    Make sure they are both executable files (sudo chmod +x ....)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多