Thread Perl Script auf Webspace (blutige Anfängerfrage)
(18 answers)
Opened by Vulpez at 2012-06-14 11:11
Der ASCII-Modus verändert die Zeilenenden. So wird bei Windows beim Hochladen zu Linux aus "\x0D\x0A" -> "\x0A" und umgekehrt beim herunterladen. Das hat für Perl insoweit eine Bedeutung, als dass der Apache durch das Shebang #!/usr/bin/perl den Interpreter für das Script identifiziert. Ist der Zeilenumbruch des Systems "\x0A" das Zeilenende aber "\x0D\x0A" sucht der Apache nach "/usr/bin/perl\x0D" was es natürlich nicht gibt. Dem kann man entgegenwirken indem man das shebang anpasst: #!/usr/bin/perl -w damit sucht Apache nach "/usr/bin/perl" und perl kommt auch mit "\x0D\x0A" klar.
Jetzt kommt das große ABER. Manche FTP-Server wandeln nicht nur die Zeilenenden sondern auch die Zeichenkodierung. Die Idee ist an sich nicht schlecht. Der Client teilt mit welche Kodierung er nutzt und der Server kann die Kodierung ändern, damit sie mit der Kodierung des Systems übereinstimmt. Manche Server testen sogar welche Kodierung es ein könnte. (ganz übel) Damit sollen kaputte Webseiten vermieden werden, oder außer Kontrolle geratene Konsolen. Nur das kann auch nach hinten los gehen. Als Beispiel. Man hat ein Script geschrieben, das use utf8 nutzt viel Deutschen Text enthält. Die Datei ist als UTF-8 gespeichert. Der FTP-Server wandelt die Kodierung iso-8859-15. Nun fliegt einem das Script um die Ohren. Wer Erfahrung hat speichert das Script mit dem ZeilenUmbruchFormat des Zielsystems und lädt es binär hoch. Zudem setzte er das "Charset" korrekt und kümmert sich um die richtige Input Kodierung. Anfänger sollten Scripte im ASCII Modus übertragen, und Sonderzeichen als HTML-Entities kodieren, um den genannten Problemen aus dem weg zu gehen. |