我有一个由 apache 服务器运行的 php 网页,它存储在 /var/www/myweb/
并称为 index.php
现在我正尝试从 php 网页调用 /home/me/
中名为 test.sh
的脚本。它所做的只是在 /home/me/
测试.sh:
#!/bin/bash
touch file1
~
~
~
~
在 index.php
中,我正在尝试调用脚本
索引.php:
if ($_GET['run'])
{
exec('/home/me/test.sh');
}
不幸的是,这不起作用,原因似乎是权限问题。我继续尝试从 /var/www/myweb/
/home/me/test.sh
我得到了这个错误:
touch: cannot touch ‘file1’: Permission denied
有没有办法解决这个问题?
最佳答案
如果您不更改目录,则您不会尝试触摸 /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
, 还是写不出来。
理想情况下,您需要提供正在创建的文件的完整路径,以避免混淆您在文件系统中的位置,并且该位置需要具有权限 drwxrwxr-x
(或 drwxrwsr-x
)用于 me
和组 www-data
。
关于php - 从 php 网页运行 bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36254473/