2016-03-06 1 views
0

J'ai mis à jour vers PHP 7 à mon localhost, mais depuis lors je veux rediriger d'une page à l'autre dans mon application nette, je recevrai l'erreur: 500 - Erreur interne du serveur. Je cherchais à travers le débordement de la pile et j'ai trouvé un problème qui est assez similaire au mien ici: How to solve "mod_fastcgi.c.2566 unexpected end-of-file (perhaps the fastcgi process died)" when calling .php that takes long time to execute?. Cependant, je ne travaille pas avec de gros fichiers et ma connexion meurt immédiatement.Mon application PHP meurt avec fastcgi: fin de fichier inattendue

Mon /var/log/lighttpd/error.log

2016-03-06 10:54:11: (server.c.1456) [note] graceful shutdown started 
2016-03-06 10:54:11: (server.c.1572) server stopped by UID = 0 PID = 351 
2016-03-06 11:03:48: (log.c.194) server started 
2016-03-06 11:07:17: (mod_fastcgi.c.2390) unexpected end-of-file (perhaps the fastcgi process died): pid: 21725 socket: unix:/run/lighttpd/php-fastcgi.sock-3 
2016-03-06 11:07:17: (mod_fastcgi.c.3171) response not received, request sent: 1029 on socket: unix:/run/lighttpd/php-fastcgi.sock-3 for /~rost/lp/web/www/index.php?, closing connection 
2016-03-06 11:09:01: (mod_fastcgi.c.2390) unexpected end-of-file (perhaps the fastcgi process died): pid: 21725 socket: unix:/run/lighttpd/php-fastcgi.sock-3 
2016-03-06 11:09:01: (mod_fastcgi.c.3171) response not received, request sent: 1061 on socket: unix:/run/lighttpd/php-fastcgi.sock-3 for /~rost/lp/web/www/index.php?action=list&presenter=Campaign, closing connection 
2016-03-06 11:09:06: (mod_fastcgi.c.2390) unexpected end-of-file (perhaps the fastcgi process died): pid: 21725 socket: unix:/run/lighttpd/php-fastcgi.sock-3 
2016-03-06 11:09:06: (mod_fastcgi.c.3171) response not received, request sent: 942 on socket: unix:/run/lighttpd/php-fastcgi.sock-3 for /~rost/lp/web/www/index.php?, closing connection 
2016-03-06 11:09:14: (mod_fastcgi.c.2390) unexpected end-of-file (perhaps the fastcgi process died): pid: 21725 socket: unix:/run/lighttpd/php-fastcgi.sock-3 
2016-03-06 11:09:14: (mod_fastcgi.c.3171) response not received, request sent: 1051 on socket: unix:/run/lighttpd/php-fastcgi.sock-3 for /~rost/lp/web/www/index.php?action=out&presenter=Sign, closing connection 

Mon /etc/lighttpd/lighttpd.conf

server.modules  = ("mod_userdir", 
         "mod_access", 
         "mod_accesslog", 
         "mod_fastcgi", 
         "mod_rewrite", 
         "mod_auth" 
         ) 
server.port   = 80 
server.username  = "http" 
server.groupname  = "http" 
server.document-root = "/srv/http" 
server.errorlog  = "/var/log/lighttpd/error.log" 
dir-listing.activate = "enable" 
index-file.names  = ("index.html") 

# Rewrite URL without dots to index.php 
#url.rewrite-once  = ("/^[^.?]*$/" => "/index.php") 
mimetype.assign  = (".html" => "text/html", 
         ".htm" => "text/html", 
         ".txt" => "text/plain", 
         ".properties" => "text/plain", 
         ".jpg" => "image/jpeg", 
         ".png" => "image/png", 
         ".svg" => "image/svg+xml", 
         ".gif" => "image/gif", 
         ".css" => "text/css", 
         ".js" => "application/x-javascript", 
         "" => "application/octet-stream" 
         ) 
userdir.path   = "public_html" 

# Fast CGI 
include "conf.d/fastcgi.conf" 

Mon /etc/lighttpd/conf .d/fastcgi.conf

server.modules += ("mod_fastcgi") 

#server.indexfiles += ("index.php") #this is deprecated 
index-file.names += ("index.php") 

fastcgi.server = (
    ".php" => (
     "localhost" => ( 
     "bin-path" => "/usr/bin/php-cgi", 
     "socket" => "/run/lighttpd/php-fastcgi.sock", 
     "max-procs" => 4, # default value 
     "bin-environment" => (
      "PHP_FCGI_CHILDREN" => "1", # default value 
     ), 
     "broken-scriptfilename" => "enable" 
    )) 
) 

Variables de /etc/php/php.ini

cat /etc/php/php.ini | grep max_execution_time 
max_execution_time = 30 

cat /etc/php/php.ini | grep default_socket_timeout 
default_socket_timeout = 60 

Mise à jour 7.3.2016

Je suis passé de php rapide php-cgi FPM et chose intéressante est ce problème prévaut, mais est moins souvent. Parfois, la redirection passe à 500 et parfois non. Et l'erreur de nouveau journal:

2016-03-07 22:23:32: (mod_fastcgi.c.2390) unexpected end-of-file (perhaps the fastcgi process died): pid: 0 socket: unix:/run/php-fpm/php-fpm.sock 
2016-03-07 22:23:32: (mod_fastcgi.c.3171) response not received, request sent: 1084 on socket: unix:/run/php-fpm/php-fpm.sock for /~rost/lp/web/www/index.php?action=out&presenter=Sign, closing connection 

Répondre

0

J'ai enfin trouvé une solution. C'est probablement un problème lié à Nette/Cassandra.

L'erreur apparaissait en raison de l'objet Nette \ Security \ Identity, après avoir affecté les données utilisateur en elle:

public function authenticate(array $credentials) { 

    // Retrieve username and password 
    list($email, $passwd) = $credentials; 

    // Select user with given email from database 
    $usr = $this->daoManager->getDao("AppUser")->loadByEmail($email); 
    if ($usr == null || count($usr) == 0) { 
    $msg = 'The email is incorrect.'; 
    $arg = self::IDENTITY_NOT_FOUND; 
    throw new Nette\Security\AuthenticationException($msg, $arg); 
    } 

    // TODO Check user password 
    // TODO Check verification  

    // Create identity - THE PROBLEM WAS HERE 
    return new Identity($email, $usr['role'], $usr); 
} 

Il a été causé par la valeur « enregistrée » dans le tableau de usr $, ce qui était de type Cassandra \ Horodatage Depuis lors presque chaque redirection s'est écrasé avec l'erreur mentionnée ci-dessus.

code suivant résolu le problème:

return new Identity($email, $usr['role'], $this->fixUserArray($usr)); 

Où:

protected function fixUserArray(array $user) { 
    $result = array(); 
    foreach ($user as $key => $val) { 
    if ($key === "registered") { 
     $result[$key] = $val->time(); 
    } else { 
     $result[$key] = $val; 
    } 
    } 
    return $result; 
} 
0

Également, essayez d'abord de supprimer le cache Nette.

+0

Suppression du cache ne sera pas utile nette :( – Michal