【问题标题】:Run Debian Bash script with PHP使用 PHP 运行 Debian Bash 脚本
【发布时间】:2017-12-09 02:19:48
【问题描述】:

我无法使用 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

脚本正在通过 root 和 SSH 使用。

我不是 Linux 专家。 但我认为这是文件所有者的问题。

但我过去已经用“chown”造成了一些损害,所以如果问题仍然存在,我希望更有经验的人提供一些指导。

感谢您的帮助, 康诺尔。

【问题讨论】:

  • 您在浏览器中访问该脚本时遇到的确切错误是什么?
  • 你忘记了 exec 命令中的第二个引号
  • 请不要将 solved 附加到您的标题中。而是接受一个答案。这将告诉其他人问题现已解决。谢谢。

标签: php linux bash shell debian


【解决方案1】:

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

我搜索了更多关于文件所有者的信息。

我做了一些改变

我做了这些改变:

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?

感谢您的宝贵时间,希望它可以帮助其他人。

【讨论】:

  • 请确保你accept你自己的答案(在宽限期到期并且你已经收集了足够的积分之后),所以它被正确标记为已解决 .
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 2023-03-07
    • 2011-07-27
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-23
    • 2011-02-02
    • 2012-07-10
    相关资源
    最近更新 更多