Marcin Paweł S.

Marcin Paweł S. programista
C#/SQL/PHP

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

witam jak w temacie, dzieje się to przy skryptach korzystających intensywniej z bazy danych. Prosiłbym o jakieś wskazówki

Dzięki
Artur Frydel

Artur Frydel In /dev/null no one
can hear your scream

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

A więcej danych?
Bo przy tak małej ilości informacji to każdy Cię do /dev/null lub na drzewo/google wyśle.
Jaka konfiguracja sprzętowa? Co mówią logi? Jaka baza? Czy to jest serwer z pakietów czy jakaś ręczna rzeźba?

Sprawdzałeś sprzęt? Dysk? RAM?
Marcin Paweł S.

Marcin Paweł S. programista
C#/SQL/PHP

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

To jest Debian chyba nic ręcznego na zdalnym wykupionym serwerze

baza mySQL i ODBC też ale przy samym mySQL i jakimś imporcie przez skrypt też potrafi się tak popsuć

gdzie szukać logów?

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

cmd?
Maciej K.

Maciej K. DevOps Engineer

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

Błąd 500 pojawia się z reguły w przypadku posiadania błędnych wpisów w plikach .htaccess, błędnej konfiguracji lub np. w przypadku wykorzystania limitu ilości połączeń do bazy danych. Na podstawie tak skąpych informacji myślę, że nikt wiele więcej nie wymyśli, bo nie znamy ani konfiguracji usług/sprzętu ani szczegółów z logów.

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

Ten błąd pokazuje się także w przypadku, gdy masz wyłączone wyświetlanie błędów. Na ten czas włącz go w php.ini czy też .htaccess jeśli nie jest zabronione, zamiast 500 powinieneś otrzymać klarowną informację nt. problemu, choć znając życie będzie coś w stylu "MySQL has gone away" lub connection aborted. Albo przekraczasz limit czasu żądania, limit pamięci bądź limit zapytań.

konto usunięte

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

Marcin Paweł Stasiak:
To jest Debian chyba nic ręcznego na zdalnym wykupionym serwerze

baza mySQL i ODBC też ale przy samym mySQL i jakimś imporcie przez skrypt też potrafi się tak popsuć

gdzie szukać logów?

standardowo
/var/log/httpd
Łukasz T.

Łukasz T. administrator
systemów, Grupa
Interia.pl

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

/var/log/apache lub apache2 w Debianie
Marcin Paweł S.

Marcin Paweł S. programista
C#/SQL/PHP

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

Dzięki za zainteresowanie :)

/var/log/apache2/error.log
[Thu Mar 28 00:23:35 2013] [notice] Graceful restart requested, doing restart
apache2: Could not reliably determine the server's fully qualified domain name, using rico.kubala.tv for ServerName
[Thu Mar 28 00:23:38 2013] [notice] Digest: generating secret for digest authentication ...
[Thu Mar 28 00:23:38 2013] [notice] Digest: done
[Thu Mar 28 00:23:39 2013] [warn] Init: Name-based SSL virtual hosts only work for clients with TLS server name indication support (RFC 4366)
[Thu Mar 28 00:23:39 2013] [notice] Apache/2.2.16 (Debian) DAV/2 SVN/1.6.12 mod_fcgid/2.3.6 PHP/5.3.23-1~dotdeb.0 with Suhosin-Patch mod_ruby/1.2.6 Ruby/1.8.7(2010-08-1
6) mod_ssl/2.2.16 OpenSSL/0.9.8o configured -- resuming normal operations
Empty input file
[Thu Mar 28 03:49:25 2013] [warn] mod_fcgid: process 10660 graceful kill fail, sending SIGKILL
[Thu Mar 28 03:56:49 2013] [warn] mod_fcgid: process 15573 graceful kill fail, sending SIGKILL
[Thu Mar 28 03:57:25 2013] [warn] mod_fcgid: process 11894 graceful kill fail, sending SIGKILL


To powinno coś wyjaśnić bo pisze o zabijaniu procesów, prosiłbym o jakieś wskazówki w interpretacjiMarcin Paweł Stasiak edytował(a) ten post dnia 28.03.13 o godzinie 09:11

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

Serwer masz via php-fpm? Może zbyt wcześnie proces intepretera jest zabijany? A przy innych długotrwałych operacjach też się tak dzieje? Spróbuj np zapętlić jakiś skrypt i sprawdź co się stanie. Włączyłeś wyświetlanie błędów? Sprawdź też logi php, apache jest tylko informowany o błędzie i wysyła stosowny nagłówek, logi php/mysql powinny zawierać szersze info na temat problemu.
Marcin Paweł S.

Marcin Paweł S. programista
C#/SQL/PHP

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

Paweł C.:
cmd?
znaczy terminal, użyłem nazwy windowsowej

php-fpm, chyba mam jako moduł apache, ale gdzie to sprawdzić ??

zapętlony skrypt wołany przez apache też pluje błędem, ale za to zawołany z terminala "php text.php" działa poprawnie do końca

logi mySQL puste

nie wiem gdzie szukać logów PHP w /var/log ich nie znajduje

zwiększyłem w php.ini limit czasu działania i na zapętlony skrypt pomogło , ale na skrypt operujący na bazie już nie

mam włączone pokazywanie błędów i ustawione na E_ALL | E_STRICT

kod skryptu operującego na bazie

<!DOCTYPE html>
<html lang="pl-PL">
<head>
<meta charset="UTF-8" />
</head>
<body>
<?
set_time_limit(60*35);

$db = new mysqli("localhost", "xxxx", "yyyyy", "zzzzz");
$db->set_charset("utf8");

$conn=odbc_pconnect('baza2','','') or die(odbc_error());
$resTab=odbc_tables($conn);
//odbc_result_all($resTab);

while (odbc_fetch_row($resTab)){
$TABLE_NAME=odbc_result($resTab,"TABLE_NAME");
$TABLE_TYPE=odbc_result($resTab,"TABLE_TYPE");

if ($TABLE_TYPE!="TABLE")
continue;
echo $TABLE_NAME.' '.$TABLE_TYPE.'<br>';

$query="SELECT * FROM \"{$TABLE_NAME}\" ";
$result=odbc_exec($conn,$query) or die(odbc_error());

$i=0;
while (odbc_fetch_row($result))
{
if ($i>5)
{
break;
}

$nazwa=odbc_result($result,"Nazwa firmy");
$telefon=odbc_result($result,"Numer telefonu");
$czysty_telefon=czysc_telefon($telefon);
$opis="poczta: ".odbc_result($result,"Poczta")."\r\n" ;
$branza=odbc_result($result,"Branża");
$www=odbc_result($result,"Strona WWW");
$ulica=odbc_result($result,"Ulica");
$miasto =odbc_result($result,"Miasto");
$email =odbc_result($result,"E-mail");

$nazwa=mysql_escape_string($nazwa);
$telefon=mysql_escape_string($telefon);
$czysty_telefon=mysql_escape_string($czysty_telefon);
$opis=mysql_escape_string($opis);
$branza=mysql_escape_string($branza);
$ulica=mysql_escape_string($ulica);
$miasto=mysql_escape_string($miasto);
$email=mysql_escape_string($email);
$www=mysql_escape_string($www);

$q="INSERT INTO firmy_orginaly2 (nazwa, firmy_status, uzytkownicy_id, telefon, opis, branza, www, ulica, miasto, email, data_importu, czysty_telefon) values ('" . $nazwa . "', 0 , 0 , '" . $telefon . "', '" . $opis . "', '" . $branza . "', '" . $www . "', '" . $ulica . "', '" . $miasto . "', '" . $email . "', now(), '".$czysty_telefon."'); \r\n";

echo $q.'<br><br>';
try {
$db->query($q);
} catch (Exception $e) {
//echo $e->getMessage().'<hr/>';
}
$i++;
if ($i%10000==0)
{
echo $i.', ';
flush();
}
}
} //while (odbc_fetch_row($resTab)){

echo $i.'<br/>';
odbc_close($conn);

function czysc_telefon($s){
$odp="";
for ($i=0; $i<strlen($s); $i++ ){
$znak=substr($s, $i,1);
if ($znak=="0")
$odp.=$znak;
elseif ($znak=="1")
$odp.=$znak;
elseif ($znak=="2")
$odp.=$znak;
elseif ($znak=="3")
$odp.=$znak;
elseif ($znak=="4")
$odp.=$znak;
elseif ($znak=="5")
$odp.=$znak;
elseif ($znak=="6")
$odp.=$znak;
elseif ($znak=="7")
$odp.=$znak;
elseif ($znak=="8")
$odp.=$znak;
elseif ($znak=="9")
$odp.=$znak;
else {
//nic
}
}
return $odp;
}

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

Jaką masz wersję PHP?
Marcin Paweł S.

Marcin Paweł S. programista
C#/SQL/PHP

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...


PHP Version 5.3.23-1~dotdeb.0

System Linux xxxxx.pl 2.6.32-5-686-bigmem #1 SMP Sun Sep 23 10:27:25 UTC 2012 i686
Build Date Mar 25 2013 23:06:32
Server API CGI/FastCGI
Virtual Directory Support disabled
Configuration File (php.ini) Path /etc/php5/cgi


czytałem że "Naruszenie ochrony pamięci" zdarza się na linuxie różnym programom ale nie doszedłem od czego to, zwykle zainstalowanie innej wersji pomagało .... ale trochę boję się tego robić na produkcyjnym serwerze

skrypt odpaliłem rezygnując z działania na dwóch połączeniach jednocześnie, ale ten problem pojawia się też w phpmyadminie często :/Marcin Paweł Stasiak edytował(a) ten post dnia 28.03.13 o godzinie 14:42

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

php działa via cgi, możesz go bezboleśnie przełączyć na mod_php5 zamiast fastcgi i sprawdzić jak wtedy się zachowa. Wersję masz najnowszą z linii 5.3 więc powinno być dobrze. Na necie znalazłem problemy z odbc wywołujący ten błąd na wersji 5.3.12, stąd pytanie.
Adam Tomasz K.

Adam Tomasz K. Zaawansowana
modyfikacja
rzeczywistości.

Temat: debian apache PHP: 500 Internal Server Error lub w cmd...

Problem może być po stronie bazy, a logowanie tego co się dzieje z MySQL-em w Debianie jest, moim zdaniem, popsute i aby mieć jakieś logi dodaj poniższe do sekcji [mysqld]:

# start, stan bazy
log_error = /var/log/mysql.log

# logowanie całych zapytań - tylko do debugowania
#general_log_file = /var/log/mysql/mysql.log
#general_log = 1

# czasochłonne zapytania
log_slow_queries = /var/log/mysql/mysql-slow.log
long_query_time = 2
log-queries-not-using-indexes

Sprawdź jeszcze co jest w /var/log/daemon.logAdam Tomasz K. edytował(a) ten post dnia 28.03.13 o godzinie 21:27

Następna dyskusja:

internal server error 500 d...




Wyślij zaproszenie do