从php网页运行bash脚本

时间:2016-03-28 01:02:07

标签: php linux bash

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

现在我正在尝试从php网页调用名为/home/me/的{​​{1}}中的脚本。它只是在test.sh

上创建一个文件1

test.sh:

/home/me/

#!/bin/bash touch file1 ~ ~ ~ ~ 内,我正在尝试调用脚本

的index.php:

index.php

不幸的是,这不起作用,似乎原因是许可问题。我继续尝试从 if ($_GET['run']) { exec('/home/me/test.sh'); }

运行此命令
/var/www/myweb/

我收到了这个错误:

  

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

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

1 个答案:

答案 0 :(得分:1)

如果您不更改目录,则尝试触摸/home/me/file1,但/var/www/myweb/file1。但是,/var/www/myweb允许rootrwx; www-data r-x组和r-x以及其他所有人www-data。当Apache运行它时,它在www-data组中以r-x运行它;它获取组权限me,禁止创建新文件。当您运行它时,它正在以www-data运行,可能不在r-x组中,它取最后一组权限:仍为drwxrwxr-x,仍然无法写入。

理想情况下,您希望提供正在创建的文件的完整路径,以避免混淆文件系统中的位置,并且该位置希望拥有权限drwxrwsr-x(或{{1 } {} for me和group www-data