Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: 500 Internal Server Error
Форумы портала PHP.SU » Серверное администрирование » Apache и другие веб-серверы » 500 Internal Server Error

Страниц (2): [1] 2 »
 

1. DrShift - 15 Октября, 2007 - 08:01:01 - перейти к сообщению
Добрый день, уважаемые форумчане.
Сталкнулся с такой проблемой: при обработке моего скрипта выпадает следующая ошибка:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin_name@domain and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.


в error.log добавленно сообщение:

[Data][error][client ip] Premature end of script headers: php.exe, referer:http://source
[/size]

Скрипт отбирает записи из ldap(active directory) базы.
Ошибка возникает при отборе большого числа записей, при малом их количестве, например только с одной ветки, все работает причем шустро.

На одном из форумов нашел по этому поводу сообщение, где советовали сделать следующие настройки в php.ini:

[size=9]max_execution_time = 400
max_input_time = 800
memory_limit = 256M


все сделал, но это не помогло, поэтому я здесь.
2. evgenijj - 15 Октября, 2007 - 09:47:08 - перейти к сообщению
DrShift пишет:

Скрипт отбирает записи из ldap(active directory) базы.
Ошибка возникает при отборе большого числа записей, при малом их количестве, например только с одной ветки, все работает причем шустро.


Возможно, ты где-то вгоняешь скрипт в "вечный цикл". Тогда надо искать ошибку. Если ошибки нет - есть смысл подумать об оптимизации скрипта. Ведь при малом количестве записей скрипт работает?

3. EuGen - 15 Октября, 2007 - 09:54:06 - перейти к сообщению
Вы можете попробовать сделать в начале скрипта:

А так же:
PHP:
скопировать код в буфер обмена
  1.  
  2. ini_set("memory_limit","$MAX_SIZE");//$MAX_SIZE тут, например, "512М"
  3.  

Но если evgenij прав и у Вас где-то бесконечный цикл или тому подобное, Вам это не поможет.
4. DrShift - 15 Октября, 2007 - 09:56:32 - перейти к сообщению
Цитата:
Возможно, ты где-то вгоняешь скрипт в "вечный цикл". Тогда надо искать ошибку. Если ошибки нет - есть смысл подумать об оптимизации скрипта. Ведь при малом количестве записей скрипт работает?



Добрый день Евгений, все дело в настройках или php.ini либо в httpd.conf. Другие варианты исключаю по причине того что код просто таскает записи и прямопропорционально зависит от их количества.

Может есть какая нибудь возможность расширить сообщение ошибки???
Заранее спасибо.
5. EuGen - 15 Октября, 2007 - 10:01:15 - перейти к сообщению
Да, и еще уточните: падает сам апач или просто скрипт?..Если скрипт, то добавьте в начало скрипта:

И отпишите сюда текст ошибки.
6. DrShift - 15 Октября, 2007 - 10:12:32 - перейти к сообщению
Notice: Undefined index: mobile in C:Program FilesApache Software FoundationApache2.2htdocsmy_fold erEasyFormstest_folderldapnew_ld ap.php on line 56

Notice: Undefined variable: string in C:Program FilesApache Software FoundationApache2.2htdocsmy_fold erEasyFormstest_folderldapnew_ld ap.php on line 97

Не знаю почему эти ноутисы вылетают, на то что они ругабтся в скрипте выглядит следубщим образом:

$mobile = array();
.
....
.
if($val["mobile"][0] != '') {
$mobile[] = $val["mobile"][0];
}

а $string;

for($i=1; $i<count($mobile); $i++) {
$string .= $mobile[$i].',';
}
7. EuGen - 15 Октября, 2007 - 10:26:33 - перейти к сообщению
Во-первых, правильнее было бы :
PHP:
скопировать код в буфер обмена
  1.  
  2. $mobile=array();
  3. if (isset($val["mobile"][0]))
  4.    $mobile[]=$val["mobile"][0];
  5.  

и
PHP:
скопировать код в буфер обмена
  1.  
  2. $string=implode(",",$mobile);
  3.  

А во-вторых, Вы так и не сказали, что падает: веб-сервер или скрипт.
8. DrShift - 15 Октября, 2007 - 10:46:07 - перейти к сообщению
EuGen пишет:
Во-первых, правильнее было бы :
PHP:
скопировать код в буфер обмена
  1.  
  2. $mobile=array();
  3. if (isset($val["mobile"][0]))
  4.    $mobile[]=$val["mobile"][0];
  5.  

и

А во-вторых, Вы так и не сказали, что падает: веб-сервер или скрипт.


Спасибо, Я все это понимаю, но сейчас не до красоты. Ведь этот код работает с меньшим количеством записей, значит причина не в этом. Есле можите, помогите с настройками конфигурационных файлов.
9. EuGen - 15 Октября, 2007 - 10:53:30 - перейти к сообщению
Я вот уже в третий раз прошу Вас уточнить: ЧТО падает? Веб-сервер или скрипт?
Если падает скрипт по памяти или времени, Вы должны были увидеть Fatal Error. У нас сейчас телепаты все в отпуске, поэтому прошу конкретнее описать ошибку (конкретнее, чем "500 Internal Server Error").
10. DrShift - 15 Октября, 2007 - 11:01:41 - перейти к сообщению
EuGen пишет:
Я вот уже в третий раз прошу Вас уточнить: ЧТО падает? Веб-сервер или скрипт?
Если падает скрипт по памяти или времени, Вы должны были увидеть Fatal Error. У нас сейчас телепаты все в отпуске, поэтому прошу конкретнее описать ошибку (конкретнее, чем "500 Internal Server Error").


Падает скрипт, потому что изменив область выбора, все отрабатывается. А когда не отрабатывается, т.е. мого значений надо выбрать, никаких Fatal Error не всплывает, а только 500 Internal Server Error.
Если бы всплывало что-нибудь еще, я бы непременно сказал.
11. EuGen - 15 Октября, 2007 - 11:11:28 - перейти к сообщению
В таком случае найдите и закомментируйте в httpd.conf строку:
ErrorDocument 500 ..
(то есть сделайте ее как #ErrorDocument 500)
И еще: иногда IE ведет себя так, что не показывает ошибку даже в случае, если веб-сервер не настроен на отображение статичного документа, так что советую Вам просмотреть тот же документ в FireFox например.
12. DrShift - 15 Октября, 2007 - 11:19:46 - перейти к сообщению
Эта строка и так закоментированная, а браузер другой использовать нельзя, только IE. Еще я понять не могу при чем тут браузер вообще.
13. EuGen - 15 Октября, 2007 - 11:25:39 - перейти к сообщению
У меня почти всегда именно так и бывает в IE, что ошибки PHP скрипта не показываются, так как веб-сервер отдает статус 500, и IE подгружает свою страницу после этого, "забив" на контент страницы веб-сервера.
Используйте FireFox только для отладки, а как поймете в чем ошибка - снова будете использовать IE.
14. DrShift - 15 Октября, 2007 - 11:34:40 - перейти к сообщению
Пошел качать firefox. EUGen если можете, напишите как увеличить таймаут и объем загружаемой страницы, Вы об этом упоменали где-то выше. Попробую это тоже.

С благодарностью Павел.
15. EuGen - 15 Октября, 2007 - 11:41:35 - перейти к сообщению
http://www.php.su/forum/topic.ph...art=1#1192431246

 

Powered by ExBB FM 1.0 RC1