php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2007

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 18.03.2007, 09:56  
Neuer Benutzer
 
Registriert seit: 30.05.2006
Beiträge: 9
mb59
Standard unexpected $end ...

Hi!

Nachdem mein Server (Ubuntu 6.06) sich mit einem Mega-Disk-Crash verabschiedet hat (Gott sei Dank ist die Sicherung noch vorher gelaufen), habe ich, um weiter arbeiten zu können, auf einer WinXP SP2 Kiste den IIS und PHP 5.2.1 installiert. Restore der Intranetseiten und los ...

War nicht ganz so: Jedes PHP Skript, das auch HTML Code beinhaltet, bringt den Fehler "unexpected $end" für die letzte Zeile. Hey, die Skirpts sind alle problemlos gelaufen! Manche seit Monaten unverändert!

Ist einem von Euch das auch passiert oder kann mir einer von Euch vielleicht weiterhelfen? Hätte ich vielleicht doch nicht die neueste PHP Version herunterladen sollen?

Danke und LG
MIchael
mb59 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 18.03.2007, 10:03  
Kein Genie
Gast
 
Beiträge: n/a
Standard

Ich glaube nicht das es an der PHP Version liegt.
Schau mal nach, ob du auch wirklich alle geöffneten Klammern auch geschloßen hast.
Das ist meistens der Fehler.
 
Alt 18.03.2007, 10:41  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Das behauptet jeder mb59

Code:
<?php
function helloWorld() {
    echo "Hello World";
?>
Zitat:
Parse error: syntax error, unexpected $end in T:\Webserver\projects\localhost\htdocs\test.php on line 4
Wie Kein Genie sagte, handelt es sich wohl lediglich um einen Klammerfehler.
Zergling-new ist offline  
Alt 18.03.2007, 10:46  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo mb59,

der Unterschied sind die Zeilenumbrüche. Du hast vorher unter LINUX gearbeitet und wahrscheinlich auch entwickelt. Beim Übertragen auf eine Windows-Box kann es passieren dass Code-Teile wegen der unterschiedlichen Kodierung nicht interpretiert werden können.

In diesem Fall hilft entweder ein unix2dos auf einer LINUX-Büchse vor dem Übertragen, oder eine Konvertierung auf Windows-Seite nach Windows-Format.

Sollte das nix bringen, würde ich mal versuchen die Dateien von utf-8 nach iso-8851-1 zu konvertieren. Letzteres ist Windows-Standard.


Zitat:
Ich glaube nicht das es an der PHP Version liegt.
Das schließe ich aus, da man PHP was den Zeichensatz angeht "transparent schalten" kann, sprich den Zeichensatz des Systems verwenden kann. Wenn das nicht hilft, kann man PHP auch anweisen mit einem Encoding zu arbeiten. Siehe hierzu das PHP-Manual.
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
Alt 18.03.2007, 15:02  
Erfahrener Benutzer
 
Registriert seit: 13.08.2007
Beiträge: 1.976
KingCrunch befindet sich auf einem aufstrebenden Ast
KingCrunch eine Nachricht über ICQ schicken KingCrunch eine Nachricht über AIM schicken KingCrunch eine Nachricht über MSN schicken KingCrunch eine Nachricht über Yahoo! schicken
Standard

Windows sollte mit utf-8 auch umgehen können, zumindest wenn man nen gescheiten Editor benutzt. Schreibe unter WinXP meine Scripte auch in utf-8 und mit *NIX-Style Zeilenumbrüchen. Selbst Wordpad stellt sie korrekt da.

Ein gescheiter Editor sollte aber auch fehlende Klammer anzeigen Würde das aber zunächst auch mal testen.
__________________
Nicht jeder Fehler ist ein Bug.
KingCrunch ist offline  
Alt 19.03.2007, 19:36  
Neuer Benutzer
 
Registriert seit: 30.05.2006
Beiträge: 9
mb59
Standard Danke für Eure Infos ...

@ Kein Genie & Zergling: Es handelt sich hierbei um rund 120 bis 150 Skripts, die teilweise schon seit mehr als 2 Jahren unverändert auf der Unix-Kiste gelaufen sind. Das mit den fehlenden "}" ist mir schon klar - mehrmals selbst darüber gestolptert - aber daran kann es beim Umkopieren nicht liegen.

@ Dr.E. & KingCrunch: War mir nicht bewusst, dass es da Unterschiede gibt. Ich habe eigentlich immer unter WinXP entwickelt und dann mit FTP entweder unter Linux oder Win in Produktion gestellt. Scheinbar ist die "Magie" dahinter FTP. Diesmal hab' ich die Sicherungen einfach auf die Webroot Share kopiert und schon ging nix mehr ...

Naja, Priorität Nr. 1 im Moment ist, die Linux-Kiste wieder hinzukriegen und die Skripts dort wieder abzulegen.

Danke
Michael
mb59 ist offline  
Alt 19.03.2007, 20:42  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

mb59, an PHP liegt es definitiv nicht und der PHP-Fehler kommt auch nicht einfach so. Du glaubst vielleicht dass früher alles ging oder du beim Kopieren alles richtig gemacht hast. Aber irren ist menschlich. PHP ist Maschinencode, mich würde es wundern wenn die Fehlermeldung wilkürlich daherkäme.
Poste die Datei doch ganz einfach mal, die den Fehler hier verursacht, ich bin sicher wir kommen dem Problem ganz schnell auf die Schliche.
Zergling-new ist offline  
Alt 20.03.2007, 13:40  
Neuer Benutzer
 
Registriert seit: 30.05.2006
Beiträge: 9
mb59
Standard @zergling

Da ich (leider) noch immer auf meine Server Hardware warte, hatte ich etwas Zeit das Problem genauer anzusehen

Der Code


Code:
  if($name = "Firstname") {
    printf("Vorname ist Michael
");
  } else {
    printf("Nachname ist Binder
");
  }
wurde bei der 'alten' Installation genauso durchgeführt wie

Code:
  if($name = "Firstname")
  {
?>
  Vorname ist Michael

<?
  } else {
?>
  Nachname ist Binder

<?
  }
Bei der neuen Installation IIS unter WinXP mit neuem PHP funktioniert nur mehr das erste Code-Beispiel. Das zweite Bespiel bringt den beschriebenen Fehler. Also: mit printf() oder echo kann ich HTML schreiben, mit "?> <?" oder "<?= $variable ?>" geht's nicht (mehr).

Um für verschiedenste Anwendungen z.B. schön formatierte Formulare aufzubauen verwende ich den Dreamweaver um die Formulare zu generieren. Um diese Forumlare dann in ein PHP Skript einzubinden brauchte ich ja nur ein "?>" for das Form und ein "<? nach das Form zu setzen und schon konnte ich es verwenden. Genau das scheint bei der neuen Installation nicht mehr zu funktionieren.

Vielleicht hab' ich ja bei der IIS Installation oder bei der PHP Installation einen Fehler gemacht. Werd' mal dort suchen.

Danke und LG
Michael
PS: Da ich PHP Anwendungen für Kunden programmiere, weiss ich, was vorher gegangen ist. Dafür gibt es vor der Übergabe in Produktion einen sogenannten Regression Test, der alle Funktionen am Produktions-Server durchspielt.
mb59 ist offline  
Alt 20.03.2007, 14:19  
Erfahrener Benutzer
 
Registriert seit: 17.06.2008
Beiträge: 125
squig befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

schau dochmal in die php.ini, dort müsste "short_open_tag = On" stehen, wenn Du "<?" und "?>" nutzen möchtest.

Vielleicht wurde das bei der erneuten Installation nicht eingestellt.


Bis dääähne.
squig ist offline  
Alt 20.03.2007, 14:21  
Moderator und Wett-König
 
Benutzerbild von dr.e.
 
Registriert seit: 21.05.2008
Beiträge: 3.657
PHP-Kenntnisse:
Fortgeschritten
dr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblickdr.e. ist ein Lichtblick
dr.e. eine Nachricht über Skype™ schicken
Standard

Hallo,

gib mir mal bitte eine Übersicht über deine php.ini. Wie ist insbesondere der Parameter short_tags konfiguriert?
__________________
Viele Grüße,
Dr.E.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. Think about software design before you start to write code!
2. Discuss and review it together with experts!
3. Choose good tools (-> Adventure PHP Framework (APF))!
4. Write clean and reusable software only!
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
dr.e. ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
unexpected T_INCLUDE Buschdieb PHP Tipps 2006 8 21.04.2006 21:04
Fehler im Script, Unexpected , or ; PHP Tipps 2006 12 19.04.2006 21:20
Fehler: unexpected ')', expecting T_PAAMAYIM_NEKUDOTAYIM PHP Tipps 2006 5 27.03.2006 22:54
Parse error: syntax error, unexpected $end in D:\xampp\htdoc PHP Tipps 2005-2 11 11.10.2005 17:05
unexpected T_ECHO, aber warum ??? madSoul PHP Tipps 2005-2 6 12.08.2005 15:27
unexpected ',' PHP Tipps 2005-2 16 29.06.2005 23:13
unexpected $end stefan-miti PHP Tipps 2005-2 7 26.06.2005 13:47
PHP5: unexpected T_STRING bzw. unexpected T_OBJECT_OPERATOR PHP-Fortgeschrittene 15 18.05.2005 14:16
unexpected $end seejay PHP Tipps 2005 2 29.04.2005 17:55
parse error, unexpected $end in.. ==> Editor gesucht PHP Tipps 2005 3 03.03.2005 16:01
Parse error: parse error, unexpected '{' PHP Tipps 2005 10 23.01.2005 16:59
Parse error: unexpected $end ... on line xy PHP Tipps 2004 2 18.09.2004 13:18
Parse error: parse error, unexpected $end PHP Tipps 2004 2 24.08.2004 16:28
Script Problem: parse error unexpected $end PHP Tipps 2004 5 02.08.2004 13:25
Parse error: parse error, unexpected $end PHP Tipps 2004 5 13.07.2004 14:34


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:40 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.