从 php 网页运行 bash 脚本


Running a bash script from php webpage

我有一个由 apache 服务器运行的 php 网页,它存储在 /var/www/myweb/ 中并称为index.php

现在我正在尝试从 php 网页调用一个名为 test.sh 的脚本/home/me/。它所做的只是在/home/me/上创建一个 file1

test.sh:

#!/bin/bash

touch file1
~                                                                                                     
~                                                                                                     
~                                                                                                     
~  

index.php里面,我正在尝试调用脚本

索引.php:

  if ($_GET['run'])
                   {
                                          exec('/home/me/test.sh');
                   }

不幸的是,这不起作用,原因似乎是权限问题。我继续尝试从/var/www/myweb/运行此命令

/home/me/test.sh

我得到了这个错误:

触摸:

无法触摸"file1":权限被拒绝

有没有办法解决这个问题?

如果您不更改目录,则不是在尝试触摸/home/me/file1,而是/var/www/myweb/file1。但是,/var/www/myweb允许root rwx; www-datar-x,其他人也要r-x。当 Apache 运行它时,它会www-data组中以 www-data 运行它;它获取组权限r-x,禁止创建新文件。当你运行它时,它正在以 me ,大概不在www-data组中,它需要最后一组权限: 仍然r-x ,仍然无法写入。

理想情况下,您需要提供正在创建的文件的完整路径,以避免混淆您在文件系统中的位置,并且该位置希望具有me和组www-data的权限drwxrwxr-x(或drwxrwsr-x(。