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

read on filehandle failed

Leser: 2


<< >> 8 Einträge, 1 Seite
Heromaster
 2005-08-18 20:42
#31154 #31154
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Wenn ich XML::Simple ein Apache-Filehandle übergebe, meldet mir XML::LibXML das er die Objektmethode read im Apache::File Modul nicht finden kann.
Ok, ich mir gedacht, möglicherweise brauche ich nur ein Update von LibXML oder Apache::File, jedoch meldet mir das CPAN-Modul, das beide up-to-date sind.
Komischerweise funktioniert das unter Windows, jedoch nicht auf meinem Debian.

Das ist der relevante Code
Code: (dl )
1
2
3
4
5
6
7
8
9
my $FileHandle = Apache::File->new();
my $XMLParser = XML::Simple->new();

{
$FileHandle->open( "$ENV{DOCUMENT_ROOT}/config/database.xml" );
my $XML = $XMLParser->XMLin( $FileHandle );
my $dsn = "DBI:mysql:database=$XML->{database};host=$XML->{host};port=$XML->{port}";
$dbh = DBI->connect( $dsn, $XML->{user}, $XML->{password} );
}


Und das bekomme ich als Fehlermeldung:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
read on filehandle failed: Can't locate object method "read" via package "Apache::File" at /usr/lib/perl5/XML/LibXML.pm line 399.

Stack:
[/usr/lib/perl5/XML/LibXML.pm:399]
[/usr/lib/perl5/XML/LibXML/SAX.pm:63]
[/usr/lib/perl5/XML/LibXML/SAX.pm:30]
[/usr/share/perl5/XML/SAX/Base.pm:2294]
[/usr/share/perl5/XML/SAX/Base.pm:2322]
[/usr/share/perl5/XML/Simple.pm:291]
[/usr/share/perl5/XML/Simple.pm:221]
[/var/www/syshandler:22]
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
ptk
 2005-08-18 21:56
#31155 #31155
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Benutzt du mod_perl auf beiden Systemen? Welche Version?
Heromaster
 2005-08-18 22:23
#31156 #31156
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ich benutze auf beiden Systemen mod_perl 1.29. Auf Windows XP ist Apache 1.3.29 und auf Debian Sarge 3.1 Apache 1.3.33 installiert (wurde über apt-get install apache-perl installiert).
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
ptk
 2005-08-18 23:01
#31157 #31157
User since
2003-11-28
3645 Artikel
ModeratorIn
[default_avatar]
Code: (dl )
$FileHandle->can("read");

gibt mir auf einem Linux-Rechner false zurück. Es sieht so aus, als ob tatsächlich kein read definiert ist. Warum es unter Windows geht, kann ich mir nicht erklären. Die Versionen hier dürften ähnlich wie bei dir sein.
Heromaster
 2005-08-18 23:33
#31158 #31158
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ok, danke für die Info. Hab das Ganze jetzt mit IO::File gelöst. Als ich angefangen habe, meine Webseite auf Linux umzurüsten, hätte ich nicht gedacht das es dabei zu so solchen Problemen führt :-s.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
esskar
 2005-08-19 12:55
#31159 #31159
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
man könnte sich ja mal die quellen anschauen und vergelichen.
es ist schon seltsam.

die POD sagt zwar, dass nicht alle IO::File funktionen implementiert sind, aber lesen sollte doch wohl gehen, oder?
Heromaster
 2005-08-19 23:57
#31160 #31160
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Was mir gerade so einfällt, möglicherweise liegt es gar nicht an Apache::File, sondern an XML::LibXML. Auf meinem Windowsrechner ist XML::SAX::Expat der Standardparser, während unter Linux sich LibXML eingetragen hat. Es hat den Anschein, als ob LibXML ein echtes IO::File-Filehandle erwartet, Expat jedoch nicht. Werde das gleich mal ausprobieren und Ergebnis hier posten.
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
Heromaster
 2005-08-27 18:13
#31161 #31161
User since
2003-08-05
220 Artikel
BenutzerIn
[default_avatar]
Ich habe jetzt auf beiden Servern in XML::SAX aus der ParserDetails.ini alle möglichen Parser entfernt. Das Ergebnis bleibt das gleiche. SAX greift, unter Debian, auf LibXML zurück und unter Windows auf Expat :-/. Dann muss ich wohl damit leben, das ich Apache::File nicht unter Debian einsetzen kann *kopfschüttel*\n\n

<!--EDIT|Heromaster|1125152082-->
Derjenige, der zwei Hasen jagt, lässt einen zurück und verliert den anderen.
<< >> 8 Einträge, 1 Seite



View all threads created 2005-08-18 20:42.