我有一个由 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-data
组r-x
,其他人也要r-x
。当 Apache 运行它时,它会www-data
组中以 www-data
运行它;它获取组权限r-x
,禁止创建新文件。当你运行它时,它正在以 me
,大概不在www-data
组中,它需要最后一组权限: 仍然r-x
,仍然无法写入。
理想情况下,您需要提供正在创建的文件的完整路径,以避免混淆您在文件系统中的位置,并且该位置希望具有me
和组www-data
的权限drwxrwxr-x
(或drwxrwsr-x
(。