PHP系统函数奇怪的行为

时间:2009-12-10 16:44:32

标签: php

我对PHP系统功能有一种奇怪的行为。在这个PHP脚本中只有2条指令(其余为纯HTML):

<?php echo system('cgi-bin/gallery2/galleryheaderview.cgi'); ?>
<?php echo system('cgi-bin/gallery2/galleryview.cgi'); ?>

第一个cgi只返回一行,你可以在这里查看 http://reboltutorial.com/cgi-bin/gallery2/galleryheaderview.cgi

返回

  

我的画廊

但整个php脚本返回My Gallery两次:

  

我的画廊   我的画廊

http://reboltutorial.com/gallery2.php

是否有原因(我当然不会在第二个cgi脚本中使用我的画廊,请参阅http://reboltutorial.com/cgi-bin/gallery2/galleryview.cgi)以及如何防止这种情况?

感谢。

2 个答案:

答案 0 :(得分:4)

更新system功能会执行两项操作。首先,它将运行一个命令并将其输出传递给浏览器和/或输出缓冲区。第二个是,它将返回最后一行输出。所以,当你说

echo system('/...');

你说“嘿system,输出这个命令的结果”然后“Hey ehco,输出任何system返回”。删除回声

system('/...');

将解决您的问题。

要检查的其他一些事项

  1. 你确定它的galleryheaderview.cgi会回来两次吗?注释掉include以确保它实际上是两次回显My Gallery的脚本

  2. 您的PHP页面/程序是否以galleryheaderview.cgi被调用两次的方式包含/构建?

  3. 您确定调用网址http://reboltutorial.com/cgi-bin/gallery2/galleryheaderview.cgi正在调用与cgi-bin/gallery2/galleryheaderview.cgi相同的命令行吗?

  4. 如果你已经检查了上面的三个项目,则需要放入galleryheaderview.cgi的来源,看看它输出标题两次的原因。

答案 1 :(得分:1)

您是否确定在此行之前没有其他任何内容输出我的画廊?你应该尝试删除它,看它是否完全消失或者是否还有一个“我的画廊”

<?php echo system('cgi-bin/gallery2/galleryheaderview.cgi'); ?>

如果这不能为您带来任何进一步的好处,也许您已经包含了两次php文件?