PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP-INI Eigenschaften mit .htaccess ändern...


CueMeX
01.02.2006, 15:29:35
Moin
Ich hab vor ein paar Tagen meine PHP Version von 3 auf 4 hochgestuft.
Und auf meinem Apache, den ich auf meinem Rechner hab, liegen noch ältere Seiten von mir, die jetzt nicht mehr ordentlich laufen. Desshalb wollte ich unteranderem die register_globals in den Ordnern der älteren Seiten mit .htaccess auf On setzen. Das hab ich mit php_admin_flag register_globals On versucht. Dann gibt der Server aber die Fehlermeldung: "Internal Server Error"

Ein Auszug aus der httpd.conf:

DocumentRoot "D:\LocalHost"

<Directory />
Options FollowSymLinks Indexes
AllowOverride All
</Directory>

<Directory "D:\LocalHost">
Options Indexes FollowSymLinks Includes#
AllowOverride All
Order allow,deny
Allow from all
</Directory>


Woran kann das liegen? Eigentlich sollte das doch durch AllowOverride All möglich sein?

Und dann gibt es noch die PHP-Fehlermeldung:
Notice: Use of undefined constant Absolventen

Der PHP-Quellcode:

echo $Daten[Absolventen];

das kann ja ganz einfach durch

echo $Daten['Absolventen'];

geändert werden, so dass es wieder funktioniert. Allerdings hab ich keine Lust alle Dateien durch zu gehn und das zu ändern. Kann ich das nicht auch wie mit dem register_globals ändern?

Danke für eine Rückmeldung.

xabbuh
01.02.2006, 15:39:36
php_admin_flag kannst du nur in der Konfigurationsdatei des Apache (httpd.conf) benutzen. In .htaccess-Dateien benötigst du die Anweisung php_flag: http://www.php.net/manual/en/configuration.changes.php

CueMeX
01.02.2006, 18:25:17
Ok Danke
Das klappt schon mal.
Weiß jetzt noch wer, wie das mit dem Array aussieht?
Ist das auch eine Einstellung oder ist das etwas, was unter PHP4 nunmal so ist, um die Sprache indeutiger zu machen?
Wenn es eine Einstellung ist, weiß jemand, wie die heißt?

Danke

xabbuh
01.02.2006, 18:37:33
Und dann gibt es noch die PHP-Fehlermeldung:
Notice: Use of undefined constant Absolventen
Das ist keine direkte Fehlermeldung sondern ein Hinweis, dass du hier versuchst, eine Konstante (nämlich Absolventen) zu benutzen, die es nicht gibt.

geändert werden, so dass es wieder funktioniert. Allerdings hab ich keine Lust alle Dateien durch zu gehn und das zu ändern.
Ob du dazu Lust hast oder nicht, wird PHP ziemlich egal sein. So wie dein Code momentan aussieht, teilst du PHP mit, dass du auf das Arrayelement zugreifen möchtest, dessen Schlüssel du in der Konstanten Absolventen definiert hast, die aber nicht existiert.

Kann ich das nicht auch wie mit dem register_globals ändern?
Nein, eine dementsprechende Einstellung würde dann nämlich die vollständige Deaktivierung von Konstanten bedeuten.

CueMeX
01.02.2006, 18:58:42
Jo
Ok das hab ich soweit verstanden.
Auch das sich PHP auf eine Konstante bezieht, die es nicht gibt.
Also ist das eine Beseitigung eines "Bugs" von Version 3 zu 4?

Ich hab in meinen alten Seiten nicht mit Konstanten gearbeitet. Darum wär es für mich einfacher die Konstanten einfach zu deaktivieren. Ist das denn möglich?

xabbuh
01.02.2006, 19:54:01
Also ist das eine Beseitigung eines "Bugs" von Version 3 zu 4?
Nein, vielleicht hat sich bei dir einfach der Wert für error_reporting (http://www.php.net/manual/en/ref.errorfunc.php#ini.error-reporting) geändert. Außerdem solltest du dir am besten mal diese Seite (http://www.php.net/manual/en/language.types.array.php#language.types.array.foo-bar) durchlesen.

Darum wär es für mich einfacher die Konstanten einfach zu deaktivieren. Ist das denn möglich?
Nein, das war von mir nur beispielhaft geschrieben, um dir klarzumachen, was theoretisch nötig wäre, damit deine Variante auf jeden Fall funktioniert.