我无法使用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。
答案 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?
感谢您抽出时间,并希望能帮到其他人。