我有一个由apache服务器运行的php网页,它存储在/var/www/myweb/
并被称为index.php
现在我正在尝试从php网页调用名为/home/me/
的{{1}}中的脚本。它只是在test.sh
test.sh:
/home/me/
在#!/bin/bash
touch file1
~
~
~
~
内,我正在尝试调用脚本
的index.php:
index.php
不幸的是,这不起作用,似乎原因是许可问题。我继续尝试从 if ($_GET['run'])
{
exec('/home/me/test.sh');
}
/var/www/myweb/
我收到了这个错误:
触摸:无法触摸'file1':权限被拒绝
有没有办法解决这个问题?
答案 0 :(得分:1)
如果您不更改目录,则不尝试触摸/home/me/file1
,但/var/www/myweb/file1
。但是,/var/www/myweb
允许root
到rwx
; 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
。