In einer mod_perl-Anwendung, die nach einer gewissen Zeit auf ubuntu 16.04 läuft, wo alles gut funktioniert (ein paar Tage), erhalten wir eine fatale Nachricht im Fehlerprotokoll:
konnte den Handler
MyHandler::ModPerl20
nicht finden. Das ladbare Objekt für das Modulhauptverzeichnis konnte nicht in @INC gefunden werden.
MyHander :: ModPerl20 ist in einem Standortblock
definiert %Vor%Die ubuntu Perl Version ist 5.22. Apache 2.4
Kann das das Problem sein? Ссылка
Irgendwelche Ideen, wie das zu beheben ist? Muss ich wirklich nginx / uwsgi einrichten?
Das Ändern der MPM Apache Konfiguration von mpm_event zu mpm_prefork hat mein Problem gelöst.
Stellen Sie sicher, dass @INC
richtig eingerichtet ist, um den Pfad zu finden, in dem MyHandler::ModPerl20
installiert ist (ich denke, wenn Apache einige Kinder recycelt, hat der, der neu startet, nicht die richtige @INC
-Wert, weshalb Sie Ihr Modul nicht mehr finden.)
Versuchen Sie, a hinzuzufügen
PerlSwitches -I/your/path/for/myhandler/
in httpd.conf, um zu sehen, ob es dein Problem behebt.
Wenn sich das ändert, sehen Sie sich Anpassen von @INC an Modperl-Dokumentation, um alle Details zu sehen.
Ich habe etwas ähnliches gesehen, nicht nur mit SAS, sondern auch mit anderen Produkten.
Ich würde Ihren Systemadministrator bitten, die E / A-Module in Ihrem Linux-Server zu überprüfen. Ich denke, sie müssen neu installiert werden oder überprüfen Sie nur die Berechtigungen für die relativen Ordner.
In einer mod_perl-Anwendung, die nach einer gewissen Zeit auf ubuntu 16.04 läuft, wo alles gut funktioniert (ein paar Tage), erhalten wir eine fatale Nachricht im Fehlerprotokoll:
konnte den Handler
CGI.pm
nicht finden. Das ladbare Objekt für das Modulhauptverzeichnis konnte nicht in @INC gefunden werden.
MyHander :: ModPerl20 ist in einem Standortblock
definiert %Vor%Die ubuntu Perl Version ist 5.22. Apache 2.4
Kann das das Problem sein? Ссылка
Irgendwelche Ideen, wie das zu beheben ist? Muss ich wirklich nginx / uwsgi einrichten?
Ich habe etwas ähnliches gesehen, nicht nur mit SAS, sondern auch mit anderen Produkten.
Ich würde Ihren Systemadministrator bitten, die E / A-Module in Ihrem Linux-Server zu überprüfen. Ich denke, sie müssen neu installiert werden oder überprüfen Sie nur die Berechtigungen für die relativen Ordner.
Ich wette, dass Ihr Code CGI.pm
verwendet und das ist der Grund für den Absturz. Führen Sie den Code ohne PerlWarn on
aus und der Code wird niemals abstürzen.
Ich vermute, dass das Perl-Skript einen Speicherumbruch verursacht hat und der Server in Panik geraten musste (CGI.pm kann dies unter anderem verursachen). Also gibt es einen Punkt im Perl-Code, der eine bestimmte Situation nicht richtig behandelt.
Ohne in der Lage zu sein, Ihren Code zu sehen, kann ich nur raten, was ich von hier aus tun soll. Aber Sie können versuchen, PerlSwitches -W
oder %code% in der config einzuschalten, strict, warning, eine Datei, die logs enthält, hinzuzufügen alle Warnungen und Fehler von Perl.
Das Ändern der MPM Apache Konfiguration von mpm_event zu mpm_prefork hat mein Problem gelöst.
Stellen Sie sicher, dass %code% richtig eingerichtet ist, um den Pfad zu finden, in dem %code% installiert ist (ich denke, wenn Apache einige Kinder recycelt, hat der, der neu startet, nicht die richtige %code% -Wert, weshalb Sie Ihr Modul nicht mehr finden.)
Versuchen Sie, a hinzuzufügen %code% in httpd.conf, um zu sehen, ob es dein Problem behebt.
Wenn sich das ändert, sehen Sie sich Anpassen von @INC an Modperl-Dokumentation, um alle Details zu sehen.