2009-12-10 3 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 возвращает мою галерею Twice:

Моя галерея Моя галерея

http://reboltutorial.com/gallery2.php

Есть причина (я не использую My Gallery во второй CGI скрипт, конечно увидеть http://reboltutorial.com/cgi-bin/gallery2/galleryview.cgi) и как это предотвратить?

Спасибо.

ответ

4

Обновление: Функция system сделает две вещи. Во-первых, он будет запускать команду и передавать ее вывод в буфер и/или выходной буфер. Во-вторых, он вернет последнюю строку вывода. Поэтому, когда вы говорите

echo system('/...'); 

Вы говорите, «Эй system, выводить результаты этой команды», а затем «Эй EHCO, выход любой system возвращается». Удаление эхо-сигнала

system('/...'); 

устранит вашу проблему.

Несколько других вещей, чтобы проверить

  1. Вы уверены, что его galleryheaderview.cgi, что это вернувшиеся вещей дважды? Прокомментируйте включение, чтобы убедиться, что на самом деле это сценарий, который вторит моей галерее дважды.

  2. Является ли ваша страница/программа PHP включенной/построенной таким образом, что вызов galleryheaderview.cgi происходит дважды?

  3. Вы уверены, что вызов URL http://reboltutorial.com/cgi-bin/gallery2/galleryheaderview.cgi вызывает ту же командную строку, что и cgi-bin/gallery2/galleryheaderview.cgi?

Если вы проверили эти три пункта выше, вам нужно зайти в источник galleryheaderview.cgi и понять, почему его выводит заголовок дважды.

+0

Я решил проблему путем слияния двух скриптов cgi, но это неудовлетворительно, теперь ваше объяснение кажется мне разумным, поэтому я попытаюсь удалить эхо. Благодарю. –

1

Вы абсолютно уверены, что больше ничего не выводит Моя галерея до этой строки?Вы должны попытаться удалить его, и посмотреть, если он идет полностью прочь или если есть еще одна «Моя галерея»

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

Если это не принесет вам дальше, может быть, вы включили некоторые PHP файл в два раза?