首页 > 解决方案 > 如何在 Apache2 中使用 php 执行 shell 脚本?

问题描述

我是 Apache2 的初学者。

我想做的事

・我想在 apache2 中使用 raspberry pi 3 用 PHP 执行 shell 脚本。

我做了什么为了做上面。

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

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

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

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

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

错误

・Apache2 不执行shell 脚本。

尝试

  1. 我让www-data用户有权在没有密码的情况下执行它。
    ・<code>$ sudo visudo # => /etc/sudoers.tmp
    ・我添加www-data ALL=NOPASSWD:/bin/sh到上面的文件中。
  2. 我确保我可以通过更改权限来运行树莓派中的sh /var/pi/blink.sh文件,我想在树莓派的 Apache2 中运行该文件。
  3. 我添加sudoindex.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)。

标签: phplinuxapacheshellraspberry-pi

解决方案


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


推荐阅读