php - 从 php 网页运行 bash 脚本

标签 php linux bash

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

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

上创建一个文件 1

测试.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 允许 rootrwxwww-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/

相关文章:

linux - 在 Linux 上安装 Node 版本

PHP cURL 超时不起作用

php - 无法将 PayPal IPN 返回的日期时间值输入到 MySQL 表中

c - linux中应用程序的自动打包

linux - LXC:是来自linuxcontainers.org还是Linux内核的一部分?

node.js - OSX Yosemite 上的meanjs 堆栈安装 : mean: command not found

excel - 如何使用shell脚本将结果保存在excel中的单独列中

php - 如何在不使用 OAuth 的情况下制作安全 API?

php - 将标签附加到 MySQL 数据库中的一行

linux - 脚本无法获取 "Not Valid Identifier"