使用PHP shell_exec()执行BASH脚本,无法写入文件

触角

我正在使用 PHP 编写 API 以通过 POST 将 JSON 参数传递给 BASH 脚本。这是我正在做的事情的提炼版本:

<?php

$params = json_decode(file_get_contents('php://input'), true);

$cmd = "/bin/bash /path/to/myscript " . $params["value1"] . " " . $params["value2"] . " " . $params["value3"];
$output = "Command: " . $cmd . "\n\nResponse: " . shell_exec($cmd);

print($output);

?>

'myscript' 是一个简单的测试脚本,包含以下内容:

#!/bin/bash

echo -e "Executing script...your parameters are: [$1] [$2] [$3]\n"
echo -e "test" > /tmp/test.txt

执行脚本有效,我得到第一个回显,显示参数已成功传递。但是,尝试在写入文件系统的脚本中执行任何操作(第二个回显)不会发生。好像权限是一个问题,但我确保写入“apache”用户具有完全权限的目录。我还尝试将 apache 和我的脚本命令添加到 sudoers 并通过 sudo 无密码运行,但没有运气。我已经通过将适当的调试命令添加到我的 php 和 bash 脚本中来验证路径是明确和正确的,用户是正确的,等等,正如已经发布的其他百万个问题所建议的那样。如果我从命令行运行该脚本,它显然可以正常工作。如果我 'sudo -u apache' 运行脚本,它也可以工作(并且可以写入文件系统),所以我知道权限不是问题。我被困住了。有任何想法吗?

使用更多信息进行编辑:我还尝试禁用 SELinux,验证所有者/权限,尝试使用 777 权限写入其他目录,并使用 apache 用户从命令行(PHP 外部)执行脚本,一切都没有问题。只有在 shell_exec 中执行时,我才能向文件系统写入任何内容。

如果有帮助,我在 Centos7 上。

触角

毕竟罪魁祸首是 SELinux。禁用后,我可以写入特定目录,但仍然不能写入其他目录。不知道为什么,但即使禁用了 SELinux,我在通过 shell_exec 执行脚本时也无法写入 /tmp 虽然通过 cmd 行执行时可以。但是 shell_exec 可以写入我的 httpd 根目录没问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法使用PHP shell_exec()执行telnet命令

来自分类Dev

php,bash,sshpass,scp无法通过shell_exec工作

来自分类Dev

在Linux中脚本执行结束后,php exec或shell_exec不会终止其进程

来自分类Dev

使用shell_exec将Bash参数传递给PHP文件

来自分类Dev

Windows中的PHP shell_exec无法写入LPT1

来自分类Dev

Windows中的PHP shell_exec无法写入LPT1

来自分类Dev

当 PHP 中的 shell_exec() 执行脚本时,Python open() 函数不起作用

来自分类Dev

PHP在运行后台进程的bash脚本上调用shell_exec超时

来自分类Dev

PHP shell_exec()未执行-没有错误

来自分类Dev

用PHP shell_exec()循环:使用php for()或bash做完吗?

来自分类Dev

使用Cron和Bash Shell脚本将$(date)写入文件

来自分类Dev

无法使用exec写入文件

来自分类Dev

php -f选项无法从shell_exec工作

来自分类Dev

PHP shell_exec无法与grep和管道一起使用

来自分类Dev

php-使用shell_exec运行shell命令

来自分类Dev

无法从PHP执行Bash脚本

来自分类Dev

使用shell_exec从PHP内调用Python

来自分类Dev

使用shell_exec php删除计划任务

来自分类Dev

如何使用 PHP shell_exec 编辑 crontab

来自分类Dev

设置php和ffmpeg的ENV PATH以在带有CLI的shell脚本中的PHP脚本中使用它,例如shell_exec()

来自分类Dev

npm安装无法通过php system()运行(exec / shell_exec)

来自分类Dev

用php shell_exec()触发时,ImageMagick Unix外壳脚本不起作用

来自分类Dev

php shell_exec 命令不会在 ubuntu 中给出 python 脚本的输出

来自分类Dev

php-> shell_exec()-> psexec->我的可执行链失败

来自分类Dev

通过PHP中的shell_exec从自定义文件输出shell输出

来自分类Dev

PHP脚本无法正确写入文件

来自分类Dev

PHP从shell_exec删除隐藏的字符

来自分类Dev

Nginx中的PHP shell_exec权限

来自分类Dev

php shell_exec返回null

Related 相关文章

  1. 1

    无法使用PHP shell_exec()执行telnet命令

  2. 2

    php,bash,sshpass,scp无法通过shell_exec工作

  3. 3

    在Linux中脚本执行结束后,php exec或shell_exec不会终止其进程

  4. 4

    使用shell_exec将Bash参数传递给PHP文件

  5. 5

    Windows中的PHP shell_exec无法写入LPT1

  6. 6

    Windows中的PHP shell_exec无法写入LPT1

  7. 7

    当 PHP 中的 shell_exec() 执行脚本时,Python open() 函数不起作用

  8. 8

    PHP在运行后台进程的bash脚本上调用shell_exec超时

  9. 9

    PHP shell_exec()未执行-没有错误

  10. 10

    用PHP shell_exec()循环:使用php for()或bash做完吗?

  11. 11

    使用Cron和Bash Shell脚本将$(date)写入文件

  12. 12

    无法使用exec写入文件

  13. 13

    php -f选项无法从shell_exec工作

  14. 14

    PHP shell_exec无法与grep和管道一起使用

  15. 15

    php-使用shell_exec运行shell命令

  16. 16

    无法从PHP执行Bash脚本

  17. 17

    使用shell_exec从PHP内调用Python

  18. 18

    使用shell_exec php删除计划任务

  19. 19

    如何使用 PHP shell_exec 编辑 crontab

  20. 20

    设置php和ffmpeg的ENV PATH以在带有CLI的shell脚本中的PHP脚本中使用它,例如shell_exec()

  21. 21

    npm安装无法通过php system()运行(exec / shell_exec)

  22. 22

    用php shell_exec()触发时,ImageMagick Unix外壳脚本不起作用

  23. 23

    php shell_exec 命令不会在 ubuntu 中给出 python 脚本的输出

  24. 24

    php-> shell_exec()-> psexec->我的可执行链失败

  25. 25

    通过PHP中的shell_exec从自定义文件输出shell输出

  26. 26

    PHP脚本无法正确写入文件

  27. 27

    PHP从shell_exec删除隐藏的字符

  28. 28

    Nginx中的PHP shell_exec权限

  29. 29

    php shell_exec返回null

热门标签

归档