Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11564[/thread]

Subroutine X redefined at....

Leser: 2


<< >> 5 Einträge, 1 Seite
Froschpopo
 2008-04-03 08:40
#107777 #107777
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Ich habe heute mod_perl auf einem neuen Gerät eingerichtet.
Das funktioniert soweit auch ganz gut.
Aber jedesmal wenn ich das Perlscript ändere, dann erhalte ich die Meldung:
Code: (dl )
Subroutine X redefined at srv/www/cgi-bin/script.pl

Ich habe das Script schon völlig reduziert. Als es nur noch ein "hallo Welt"-Script war, kam immernoch derselbe Fehler. Es hat also ganz eindeutig nichts mit meinem Script zu tun.
Komisch ist auch: Der Fehler kommt immer dann, wenn ich das Script zuvor geändert habe und dann auch immer sehr unregelmäßig. Also nicht bei jedem Aufruf.
Der Fehler wiederholt sich jedesmal für jede Subroutine.
Sobald ich den Server neustarte, hörts auf. Aber sobald ich nur einmal etwas ändere, gehts wieder los.
Ich vermute deshalb den Fehler in der Apache-Konfiguration, die folgendermaßen aussieht:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
...
<Directory /srv/www/cgi-bin/fields>
AllowOverried AuthConfig
Options +ExecCGI -Includes
Order allow,deny
Allow from all
</Directory>

<FilesMatch "(test|bilder)\.pl$">
SetHandler perl-script
PerlHandler ModPerl::Registry
Options +ExecCGI
</FilesMatch>
...

Die Scripte die ich mit mod_perl behandeln will sind test.pl und bilder.pl.
Wenn ich SetHandler entferne, taucht der Fehler nicht auf, was wohl ein klares Zeichen dafür ist, dass es an ModPerl liegt!
Ich möchte ungern auf die Performance von ModPerl verzichten. Es funktioniert ja trotz der Warnings-Meldung. Aber es stört mich, dass die ganze Zeit mein error_log so vollgemüllt wird.

Ich verwende apache2 und mod_perl2
renee
 2008-04-03 10:25
#107778 #107778
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Benutzt Du Apache::Reload? Apache hat die Subroutinen der Module im Speicher und wenn die neu geladen werden, dann werden sie quasi "neu definiert" - auch wenn sie sich gar nicht verändert haben oder so.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Froschpopo
 2008-04-03 10:34
#107780 #107780
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
Mein Perlscript ist ein Hallo-Welt script das nur strict und warnings verwendet.
Von Apache::Reload war nicht die Rede.
Wenn ich SetHandler perl-script auskommentiere, dann klappts auch wieder! aber halt nicht mit mod_perl!
betterworld
 2008-04-03 11:09
#107783 #107783
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Froschpopo+2008-04-03 06:40:43--
Der Fehler kommt immer dann, wenn ich das Script zuvor geändert habe und dann auch immer sehr unregelmäßig.

Wahrscheinlich einmal pro Apache-Prozess.
Froschpopo
 2008-04-03 11:51
#107786 #107786
User since
2003-08-15
2653 Artikel
BenutzerIn
[default_avatar]
das ist doch irgendwie ab Version 2 so gewesen, dass er alleine erkennt, wann ein Script geändert wurde, sodass man nicht mehr wie früher den Server neustarten muss.
Es kommt mir die ganze Zeit so vor, wie als würde er, wenn eine Änderung vorliegt, das Script in den Speicher aufnehmen und dadurch einen konflikt mit den Vorgänger-Versionen auslösen die irgendwie denselben Namensraum oder sowas nutzen.
Sowas sagt mir mein Gefühl, auch wenn ich es nicht richtig fachlich ausdrücken kann.
Tatsache ist ja, dass es definitiv etwas mit der Änderung zu tun hat.
Ich denke mir irgendwie, dass er dann ein neues Script in eine bereits vorhandene und gefüllte Schachtel einpackt in der schon eine Liste mit den Subroutinen liegt auf der die ganzen Namen schon auftauchen.
<< >> 5 Einträge, 1 Seite



View all threads created 2008-04-03 08:40.