【问题标题】:Integrating Bash with PHP将 Bash 与 PHP 集成
【发布时间】:2012-01-07 18:06:23
【问题描述】:

是否可以将两者结合起来?

我在网上找到了这个例子,但它输出了一个空白页。 bash 本身正在运行并输出 Hello World!

bash 与 0777 chmod 回声.txt

  #!/bin/bash
   echo "Hello World!"

PHP

<?php
$result=shell_exec("echo.txt");
echo($result);
?>

【问题讨论】:

  • 那个 Bash 脚本有语法错误。你试过自己运行它吗?
  • shell 脚本中缺少右引号...
  • 我当然试过了。空白页。 bash 很好,只是没有复制/过去“...
  • 您能否修改您的标题,以便描述问题。

标签: php linux bash debian echo


【解决方案1】:

指定 echo.txt 的路径,相对于 PHP 脚本或绝对路径,并确保脚本是可执行的。

$ chmod +x echo.txt

<?php
$result=shell_exec("./echo.txt");
echo($result);
?>

没有指定相对路径,从命令行运行PHP,输出为

sh: echo.txt: command not found

它会在指定的路径下正常工作。

【讨论】:

  • 谢谢。 ./ 是缺少的部分
【解决方案2】:

你也可以在php中使用反引号直接在php中执行bash脚本

<?php
echo 'this is a php page.';
echo `echo "Hello World!"`;

【讨论】:

    【解决方案3】:

    确保用户 www-data 或 PHP 使用的任何用户都具有执行该脚本的权限。

    在 UNIX 中:

    chgrp www-data echo.txt
    chmod 774 echo.txt
    

    【讨论】:

    • 他说的是777 chmod,大概是表示0777对脚本文件的权限。
    • 正如迈克尔在他的回答中指出的那样,你需要在你的路径前面加上“./”
    • 所以基本上你什么都没加!
    • 777 表示:所有者读写执行,组:读写执行,其他:读写执行。 774 的含义相同,但对于其他:只读。提供一点额外的安全性
    • 是的,基本上我什么都没加,我错过了 777 位,抱歉 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-01
    • 2014-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多