打印PHP脚本';s echo在另一个PHP脚本中不包含

打印PHP脚本';s echo在另一个PHP脚本中不包含,php,Php,我有一个文件,我们把它叫做first.php。它呼应了许多文字。在该文本中,我还想包含另一个文件,second.phpechoods。我不想包含来自second.php的代码,因为存在冲突 TL;DR I希望一个PHP脚本执行另一个脚本,等待它打印,然后回显它打印的内容 尝试 echo something include second script echo something else 但由于上述碰撞,它不起作用。第二个脚本只打印短的纯文本 更好的例子 a、 php打印“hello”和“w

我有一个文件,我们把它叫做
first.php
。它呼应了许多文字。在该文本中,我还想包含另一个文件,
second.php
echoods。我不想包含来自
second.php
的代码,因为存在冲突

TL;DR I希望一个PHP脚本执行另一个脚本,等待它打印,然后回显它打印的内容

尝试

echo something
include second script
echo something else
但由于上述碰撞,它不起作用。第二个脚本只打印短的纯文本

更好的例子

  • a、 php打印“hello”和“world”,并声明
    $i=1
  • b、 php打印“漂亮”并声明
    $i=2
  • 我想打印“你好,美丽的世界”,并拥有
    $I=1

您可以使用
shell\u exec

echo something
shell_exec("php second.php");
echo something else
但是,如果第二个脚本需要访问由Web服务器设置的变量,如
$\u GET
$\u SERVER
,则这将不起作用。如果需要传递某些变量,可以将它们作为命令行参数发送。但是第二个脚本必须使用
$argv
,而不是
$\u GET
访问它们

shell_exec("php second.php " . escapeshellarg($_GET['id']));

second.php
可以从
$argv[1]

获取ID。在我看来,您应该通过不重复使用共享范围的变量来真正解决实际问题。如果你不能做到这一点,那就意味着你在当前的范围内投入了太多。然而,如果你真的想这样做,你可以把它包装在一个函数中(它有自己的作用域)


您可以在函数中包含第二个文件。函数有自己的变量作用域。所以,第二个文件的变量不能覆盖与第一个脚本文件同名的变量

$myvar = 1;
include 'first.php';
callSecond ();
echo $myvar;

function callSecond () {
    include 'second.php';
}

echo$myvar将给出1,即使'second.php'指定$myvar=2

该脚本需要一个GET变量script.php?id=xx。我不能把它添加到exec()中吗?另外,这里是否不需要完整路径?我已更新了答案,以显示如何传递该路径。也许这可以帮助您:。添加
ob_start()在您的echo和
$var=ob_end_clean()之前之后。您的所有内容都将包含在变量$var.@pbolduc中。这将如何防止第二个脚本重新分配变量
$i
?“我希望在不包含second.php中的代码的情况下执行此操作,因为存在冲突。”解决实际问题,而不是尝试提出一个无用的解决方案
<?php

$i = 1;
echo 'hello';
echo call_user_func(function() use ($theVariable) {
    // in your case this would be a include statement

    $i = 2;

    return 'beautiful';
});
echo 'world';

var_dump($i); // 1
$myvar = 1;
include 'first.php';
callSecond ();
echo $myvar;

function callSecond () {
    include 'second.php';
}