【问题标题】:How to execute shell script with php in Apache2? [duplicate]如何在 Apache2 中使用 php 执行 shell 脚本? [复制]
【发布时间】:2019-04-29 20:23:31
【问题描述】:

我是 Apache2 的初学者。

我想做什么

·我想在apache2中使用树莓派3执行一个shell脚本。

为了达到上述目的,我做了什么。

  1. 我在树莓派上安装了 apache2 和 php7。
  2. 我把index.php 写成hello world 放在/var/www/html/ 目录中。
    脚本如下。

    /var/www/html/index.php
    <?php echo('hello world'); ?>

  3. 我确保可以从连接到树莓派的本地 PC 的浏览器中看到 hello world

  4. 我更改了 PHP 脚本以执行 shell 脚本。 脚本如下。

    /var/www/html/index.php
    <?php exec('sh /var/pi/blink.sh'); ?>

错误

・Apache2 不执行 shell 脚本。

试试

  1. 我让www-data 用户有权在没有密码的情况下执行它。
    $ sudo visudo # => /etc/sudoers.tmp
    ·我在上面的文件中添加了www-data ALL=NOPASSWD:/bin/sh
  2. 我确保我可以通过更改权限来运行树莓派中的sh /var/pi/blink.sh 文件,我想在树莓派的 Apache2 中运行该文件。
  3. 我将sudo 添加到index.php,看起来像
    <?php exec('sudo sh /var/pi/blink.sh'); ?>

    然而,一切都没有改变。

我正在使用的设备

・Mac book air (OSX 10.13.6)
・Raspberry pi (Model B) with Raspbian (Raspbian GNU/Linux 9 (stretch)。

【问题讨论】:

标签: php linux apache shell raspberry-pi


【解决方案1】:

您是否检查过以确保您的脚本具有适当的权限?通常 755 将适用于 PHP 试图执行的外部脚本。另外,您是否尝试过 shell_exec() 而不是 exec()? http://php.net/manual/en/function.shell-exec.php

【讨论】:

  • 谢谢。我可以使用shell_exec() 和 apache2 运行编写为echo 'Hello world' 的shell 文件。但我无法闪烁连接到我的树莓派的 LED。因为我可以从浏览器中看到 shell 脚本,所以问题不在于 PHP,而在于 shell 脚本。我试图解决它。无论如何,谢谢。
猜你喜欢
  • 1970-01-01
  • 2013-07-10
  • 2011-08-18
  • 2015-09-19
  • 2013-02-10
  • 2011-12-06
  • 2013-12-26
  • 1970-01-01
  • 2019-12-20
相关资源
最近更新 更多