2009-12-10 56 views
0

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

<?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脚本两次返回我的相册:

我的相册 我的相册

http://reboltutorial.com/gallery2.php

是否有一个原因(我不使用我的课程的第二CGI脚本库看到http://reboltutorial.com/cgi-bin/gallery2/galleryview.cgi),以及如何防止这种情况?

谢谢。

回答

4

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

echo system('/...'); 

你说“嘿system,输出此命令的结果”,然后“嘿EHCO,输出什么system回报”。卸下回声

system('/...'); 

将解决您的问题。

其他一些东西来检查

  1. 确定其galleryheaderview.cgi多数民众赞成在返回的东西两次?注释掉包括,以确保其实际上那呼应我的相册脚本两次

  2. 是包含/这样的方式galleryheaderview.cgi被调用两次构造你的PHP页面/程序?

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

如果你已经签出上面的三个项目,你需要拖放到的galleryheaderview.cgi源,看看为什么它的输出头的两倍。

+0

我已经通过融合两个CGI脚本解决了这个问题,但它并不令人满意,您的解释现在对我来说似乎理性,所以我会尝试删除回声。谢谢。 – 2009-12-10 20:40:31

1

您是否确定没有其他人在此行之前输出My Gallery?你应该尝试删除它,看看它是否去彻底远离或者还有一个“我的相册”

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

如果这不会给你带来任何进一步的,也许你已经包括了一些PHP文件两次?