用PHP运行Debian Bash脚本

时间:2017-07-05 12:05:22

标签: php linux bash shell debian

我无法使用PHP运行bash文件。

PHP文件:

chdir('/var/www/PATH/inc/bash/');
exec('./status.sh argument, $output);

Bash文件:

#!/bin/bash
echo 'test' >> /var/www/PATH/inc/bashOutput/test.txt

PHP文件(ls -al handler.func.php):

-rw-r--r-- 1 root root 461 Jul  5 11:35 handler.func.php

Bash文件(ls -al status.sh):

-rwxr-xr-x 1 root root 255 Jul  5 11:39 status.sh

脚本正在通过SSH使用root。

我不是Linux上的专业人士。 但我认为文件所有者会遇到问题。

但我已经在过去做了一些损失" chown"所以,如果这是问题,我宁愿从更有经验的人那里得到一些指导。

谢谢你的帮助, Konorr。

2 个答案:

答案 0 :(得分:0)

Script is working using through root with SSH.有问题。当PHP脚本通过Web请求运行时,它通常以用户www-data运行。在任何情况下<?php exec('./status.sh argument, $output);?>在安全漏洞中。大多数服务器管理员都会禁用此功能。

您的另一个选择是将sudo放入您的exec函数exec('sudo bash /var/www/PATH/inc/bash/status.sh')。与使用绝对路径bash /var/www/PATH/inc/bash/status.sh

运行脚本一起

为什么你不能在脚本上运行cron?

答案 1 :(得分:0)

感谢您的回答,但不幸的是,它对我没有用。

我更多地搜索文件所有者。

我做了一些改变

我做了这些改变:

chown -R www-data:www-data /var/www/PATH
usermod -a -G www-data user
chgrp -R www-data /var/www/PATH
chmod 2750 /var/www/PATH
chmod 2750 /var/www/PATH/inc/bash

直到我从EXEC函数中删除sudo之前它还没有工作。 所以我不知道我的问题已经解决了。

我遵循了这篇文章:www-data permissions?

感谢您抽出时间,并希望能帮到其他人。