get_magic_quotes-Einstellung prüfen und behandeln

Tags: PHP Kommentieren

Wird eine Software auf einen neuen Webserver übertragen, so kann es sein, dass dort entgegen dem Entwicklungsserver die Einstellung get_magic_quotes ein- bzw. ausgeschaltet ist. Um kontinuierlich mit einer Verhaltensweise zu arbeiten, sollte am Anfang eines jeden Scriptes der folgende Code eingefügt werden.

Zuerst wird die aktuelle Konfiguration des Servers geprüft. Ist die Einstellung aktiv, so wird dem entgegengewirkt und sämtliche übergebenen Variablen werden mit der Funktion stripslashes behandelt. Anschließend kann man davon ausgehen, dass die superglobalen auf jedem Server und überall das selbe Format haben.

Warning: require_once(…php) : failed to open stream: No such file or directory in … on line XX

Tags: PHP Kommentieren

Die Erklärung für diese Fehlermeldung lautet wie die Übersetzung: Es gibt keine Datei und kein Verzeichnis, das wie angegeben heißt. Du hast also versucht, mit dem Befehl require_once() oder auch require() eine Datei einzubinden die nicht existiert – oder jedenfalls nicht an diesem Ort. Überprüfe die Schreibweise des Pfades und des Dateinamens.

Um diesem Fehler aus dem Weg zu gehen, kannst du vor dem Aufruf der Funktion require() erst prüfen, ob die Datei existiert:

Warning: session_start() : Cannot send session cache limiter – headers already sent (output started at …:X) in … on line X

Tags: PHP Kommentieren

Diese Warnung wird ausgegeben, wenn du eine Session setzt, vorher jedoch bereits eine Ausgabe tätigst. Du musst auf jeden Fall die Session starten, bevor der Antwort-Body ausgegeben wird, also bevor der letzte Header gesendet wurde. Denn auch die Sessions werden per HTTP-Header übertragen und können daher später nicht mehr nachträglich gesetzt werden.

Die Lösung des Problems ist also, so früh wie möglich im Script, insbesondere jedoch vor der ersten Ausgabe, die Session zu starten:

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in …php on line X

Tags: PHP Kommentieren

Sehr wahrscheinlich wurde hier in Zeile X ein Anführungszeichen oder Ähnliches vergessen. PHP versucht uns zu sagen, dass es den String an der Position für eine Konstante hält, da es sich nicht um ein reserviertes Wort, eine Zahl oder einen String handelt der mit Anführungszeichen eingeschlossen ist.

Dies verursacht einen solchen Fehler.
Anführungszeichen schließen und der Fehler ist behoben.

PHP Parse error: parse error, unexpected T_STRING in … on line 1

Tags: PHP Kommentieren

Diese Fehlermeldung tritt oft in Verbindung mit der Verwendung der Zend-Engine auf. Werden nämlich XML-Daten verwendet und diese direkt eingelesen, so versucht PHP den Anfang der Datei (der ja mit <? beginnt) zu interpretieren – in der Annahme es handele sich um eine PHP-Datei mit PHP-Short-Open-Tags. Dieses Verhalten ist sehr störend und heutzutage wird sowieso nur noch selten auf die Verwendung der Short-Open-Tags zurückgegriffen.

Die Lösung des Problems ist relativ einfach: In der php.ini muss die Einstellung short_open_tag umgestellt werden:

Dies bezweckt, dass die kurzen PHP-Tags (<?) nicht mehr als Beginn einer PHP-Datei interpretiert werden. Dies erlaubt dann auch wieder bequem mit XML-Daten zu arbeiten. Aber Achtung: Jetzt dürfen auch keine Short-Open-Tags mehr verwendet werden. Also fleißig <?php am Beginn eines PHP-Codeteils verwenden.

[PHP] Fatal error: Call to undefined function yaml_parse_file()

Tags: Allgemein | Apache | Debian (Linux) | PHP | Webserver Kommentieren

Dieser Fehler besagt, dass die Extension „yaml“ nicht geladen wurde. Dies kann man beheben, indem man in der entsprechenden php.ini (z.B. /etc/php5/apache2/php.ini) die Zeile

hinzufügt und anschließend der Webserver neu startet.

Als Position in der php.ini bietet sich der folgende Bereich an:

 

, , , , ,

E_DEPRECATED-Fehlermeldungen im xt:commerce ausschalten

Tags: Allgemein | PHP | Programmierung | xt:Commerce Kommentieren

Besonders nach einem Update auf eine aktuelle PHP-Version erscheinen beim alten xt:commerce (z.B. Version 3.0.4) diverse Fehlermeldungen im Error-Log, die gemeinhin auf die veralteten ereg-Funktionen hinweisen, die im veralteten Shop-System an vieler Stelle Verwendung findet. Dies führt auf Dauer zu Gigabyte großen Log-Dateien und belastet den Server unnötig. Beispiel:

[Fri Apr 10 14:22:22 XXXX] [error] [client 213.221.XXX.XXX] PHP Deprecated:  Function eregi() is deprecated in /var/www/XXX/includes/classes/language.php on line 96, referer: http://www.google.de/imgres?imgurlXXX
[Fri Apr 10 14:22:22 XXXX] [error] [client 188.165.XXX.XXX] PHP Deprecated:  Function ereg() is deprecated in/var/www/XXX/includes/application_top.php on line 212
[Fri Apr 10 14:22:22 XXXX] [error] [client 188.165.XXX.XXX] PHP Deprecated:  Function ereg() is deprecated in/var/www/XXX/includes/classes/paypal_checkout.php on line 105

Das Error-Reporting lässt sich in der Datei /includes/application_top.php umstellen. Man ersetze Zeile 35 durch Folgende:

 

iOS Web Apps: Eingeloggt bleiben

Tags: Apps | iOS | iPad | iPhone | PHP Kommentieren

Hat man eine Website / Web-App, die einen Login erfordert, zum iOS Home Screen hinzugefügt ist man bei jedem App-Start gezwungen, sich neu anzumelden. Dieses Verhalten lässt sich durch folgendes Snippet korrigieren, sodass man weiterhin (auch nach Geräteneustart) eingeloggt bleibt:

Dadurch wir die Cookie-Lebenszeit auf 1 Jahr verlängert.

Quelle

http://stackoverflow.com/questions/9998900/maintain-php-session-in-web-app-on-iphone/14594908#14594908

Baïkal Installation: „Validation error, Admin password is required.“

Tags: PHP Kommentieren

Schlägt die Installation von Baïkal („CalDAV + CardDAV lightweight server“) mit folgender Fehlermeldung fehl:

„Validation error, Admin password is required.“

liegt der Fehler sehr wahrscheinlich an der  magic_quotes_gpc-Einstellung von PHP. Diese muss nämlich auf off stehen.

Leider war es mir kurzfristig nicht möglich, diese Einstellung zu setzen. Dann hilft jedoch folgender Hot-Fix in der Datei Core/Frameworks/Flake/Framework.php:116:

Quellen

PHP: Duplikate aus Array entfernen

Tags: PHP Kommentieren

Die Funktion array_unique() (PHP 4 >= 4.0.1, PHP 5) stellt die Funktionalität zur Verfügung, doppelte Einträge (der Werte) aus einem Array zu entfernen. Es sollte jedoch beachtet werden, dass die Array-Schlüssel erhalten bleiben.
Um ein neues Array mit fortlaufenden Schlüsseln zu generieren, verwende man diesen Code (falls man das Array anschließend mit einer for-Schleife durchlaufen möchte):

$array = array_values(array_unique($array));

TOP