Почему include предотвращает загрузку страницы php? - PullRequest
1 голос
/ 01 апреля 2012

У меня есть страница index.php и просто после заголовка я хочу include файл message.php. Этот файл message.php выполняет некоторые запросы mysql, выполняет несколько функций и, в конце концов, создает echo некоторого текста.

Если я зайду на mysite.com/message.php - я смогу увидеть весь текст, который мне нужен, в моем браузере. Но если я добавлю следующую строку:

<?php include "message.php"; ?>

в мой index.php, страница загружается только до оператора include, а затем выдает 500 внутренних ошибок сервера. Как это вообще возможно? Я застрял здесь ...

РЕДАКТИРОВАТЬ : Я понял это, спасибо, что указал мне правильное направление с журналами apache. Несмотря на то, что у меня не было доступа к журналу, я сделал правку в .htaccess с помощью оператора php_value error_log log.txt. Он сбросил ошибку в текстовом файле в том же каталоге. Ошибка была вызвана функцией, имя которой уже использовалось. Вот почему отдельная среда не приводила к ошибке.

Ответы [ 5 ]

4 голосов
/ 01 апреля 2012

Добавьте следующее в верхнюю часть вашего message.php:

 ini_set('display_errors',1); 
 error_reporting(E_ALL);

Как все говорили, возможно, есть простая ошибка (возможно, пропущенная кавычка), которая выдает ошибку, но вв этой среде он выдается как ошибка 500, а не выводится на экран.Включение вышеуказанного должно выявить проблему.

2 голосов
/ 01 апреля 2012

Как указал dm03514, возможно, в вашем message.php есть что-то, что нарушает ваш код. Если в этом файле есть фатальная ошибка, это вызовет аналогичную ошибку в вашем основном файле.

Обратитесь в службу поддержки вашего error_log - это действительно помогает при отладке.

1 голос
/ 01 апреля 2012

Это возможно, потому что у вас есть ошибка в вашем message.php файле! Следующим шагом является выяснение того, что выдает ошибку. Вы можете просмотреть журналы ошибок веб-серверов, чтобы увидеть точную строку. Чтобы решить эту проблему, вам нужно сосредоточиться только на коде в файле message.php.

0 голосов
/ 01 апреля 2012

Попытайтесь сделать копию index.php, скажем, copy.php, вставьте файл test.ph, отображая только "KILLROY WAS HERE".

Если это сработает, перейдите на <?php echo "..."; ?>.

если это не сработает, поместите include в другое место и / или удалите код.

Одной из причин может быть скрытое перенаправление, заблокированное, поскольку вывод уже произошел. Скорее всего, была использована глобальная переменная.

0 голосов
/ 01 апреля 2012

Что ж, если у вас нет доступа к файлам журнала, попробуйте запустить тот же файл в любой другой среде, где вы можете увидеть ошибки.

Это единственный доступный способ.
Просить незнакомцев рассказать, какая у вас ошибка в вашем php-файле, очень мало смысла, вы знаете;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...