【问题标题】:system() function in PHP prints variable 2 timesPHP中的system()函数打印变量2次
【发布时间】:2011-02-03 19:34:42
【问题描述】:

愚蠢的问题,这段代码:

<?php
$variable = system("cat /home/maxor/test.txt");
echo $variable;
?>

带有文件 test.txt:

blah

打印:

blah
blah

我可以用 system() 函数做什么来不打印任何内容,所以我得到 1 个“blah”???

【问题讨论】:

    标签: php function system


    【解决方案1】:

    【讨论】:

      【解决方案2】:

      根据手册——见system()

      system() 和 C 版本一样 它执行的功能 给定的命令和输出 结果

      这解释了第一个blah


      并且:

      返回命令的最后一行 输出成功

      你正在回显返回的值——这解释了第二个blah


      如果你想执行一个命令,并获得一个变量的完整输出,你应该看看 execshell_exec

      第一个将把输出的所有行放到一个数组中(见第二个参数);第二个将为您提供完整的字符串输出。

      【讨论】:

        【解决方案3】:

        system 正在调用实际的cat 程序,它从test.txt 输出“blah”。它还将值返回给$variable,然后您将再次打印出来。

        使用execshell_exec 代替系统。

        【讨论】:

          【解决方案4】:

          system 显示程序输出的任何内容并返回输出的最后一行。

          exec 不显示任何内容并返回输出的最后一行。

          passthru 显示程序输出的任何内容并且不返回任何内容。

          【讨论】:

            【解决方案5】:

            请改用exec。要获取所有输出,而不仅仅是最后一行,请执行以下操作:

            $variable = array();
            $lastline = exec("cat /home/maxor/test.txt", $variable);
            echo implode("\n", $variable);
            

            【讨论】:

              猜你喜欢
              • 2012-12-12
              • 1970-01-01
              • 1970-01-01
              • 2023-02-03
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-02-11
              • 2013-06-16
              相关资源
              最近更新 更多