PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP will nicht funktioniern



joedl
16.01.05, 20:14
Hallo

Nachdem ich mich nun den ganzen Tag schon geärgert habe, poste ich hier mal mein Problem ;). Da nach der Installation von Fedora Core 3 Apache mit PHP lief, PHP allerdings nicht auf MySQL Datenbanken zugreifen konnte, wollte ich (L)AMP frisch aufsetzen - nun sitze ich im Dreck, denn jetzt funktioniert nicht einmal mehr PHP. Ich habe alles mögliche probiert: alle Programme kompiliert, oder alle wieder vom Fedora-Paketmanager installieren lassen, oder mit yum gespielt, verschiedene httpd.conf Einstellungen getestet....das Resultat ist allerdings immer dasselbe: Apache funktioniert reibungslos, bei PHP-Dateien wird allerdings nicht - wie wenn Apache ohne PHP installiert ist - der Quelltext ausgegeben, sondern der PHP-Teil der Dateien wird einfach ignoriert. Das heisst meistens: die Startseite einer PHP-Website wird korrekt angezeigt, klickt man aber die Links an, welche auf die gleiche Seite verweisen und mit PHP-ifs abgefangen werden, geschieht nichts.

System: FC3, verscheidene Apache 2er-Versionen probiert, verschiedene PHP-4er-Versionen probiert. PHP wird als Modul zu Apache nachinstalliert.

Danke schonmal für Tipps.

whistle
16.01.05, 20:19
Hi,
das könnte auch ein Programmierfehler in den php-Scripten sein.
Was passiert denn, wenn du ein php-Script mal machst, das nur <? php_info(); ?> enthält?
Gruß
Whistle

joedl
16.01.05, 20:22
phpinfo() wird korrekt ausgeführt. Allerdings können die Skripte nicht fehlerhaft sein, da sie auf meinem Server korrekt laufen.

whistle
16.01.05, 20:28
Wenn dir bei php_info schön Informationen zur php-Installation ausgegeben werde, wird es sehr wahrscheinlich ein Problem der Script sein. Vielleicht irgendwas in Richtigung register_globals?
Gruß
Whistle

joedl
16.01.05, 20:35
Danke für den Tipp! Hab die php.ini von meinem Server (mit register_globals on) kopiert, und nun funktioniert zumindest PHP wieder. Macht mich etwas stutzig, da ich in vorherigen Installations-Versuchen, die php.ini auch übernommen habe, und es nicht funktioniert hat.
Aber danke, wär nicht auf die register_globals gekommen!

Sascha-Ulf
16.01.05, 23:00
Wenn Du die Skripts selber schreibst, ändere den Zugriff auf die Variablen !

Besser Du greifst mit:
$http_post_vars['Variabelname'] oder $_post['Variabelname']
$http_get_vars["Variabelname"] oder $_get["Variabelname"]
auf Deine Variablen zu. Register-Globals kannst Du dann wieder auf OFF stellen, ist sicherer.

Achte auf Deine Konfigurationsdateien, mit denen läuft Dein Server stabil oder fällt Crackern in den Händen.

joedl
17.01.05, 15:38
Hm, ich hab jetzt das ganze nochmal runtergenommen, und neu kompiliert, und jetzt ist eben der Fall eingetreten, den ich schon oben erwähnte. Also: phpinfo() zeigt brav Informationen zum System, die php.ini ist die selbe wie oben (also ua. register_globals = On) aber es passiert dasselbe wie oben geschildert. (Der PHP-Code wird scheinbar ignoriert).)

@Sascha-Ulf: Tja, wenns wirklich so schlimm ist, werd' ich wohl mal eine Umschreibeaktion starten ;)

`kk
17.01.05, 16:12
Du musst nichts umschreiben.
Frag mal in einem PHP-Forum nach, ein Include reicht da.

Irgendwas mit extract..., aber sorry. Mir fällts grad nicht ein. ;)

Edit: Habs gefunden:

Also entweder so:

$bla = array_merge($_GET, $_POST, $_SESSION.......);
extract($bla);
Oder: http://de3.php.net/manual/de/function.import-request-variables.php

Oder, oder, oder... :ugly:

Edit2:
Zukünftig solltest du aber die superglobalen Arrays nutzen. ;)

Gruß, Kai.

Sascha-Ulf
18.01.05, 10:59
Wenn Du umschreiben kannst, schreib um. Warum einen weiteren Array einrichten, wenn es nicht unbeding notwendig ist. Bißchen auf das Laufzeitverhalten sollte man auch immer achten.

Register-Globols steht übrigens von nun an Standardmäßig in PHP 5.x auf OFF. Somit sind einige Angriffsmöglichkeiten von vornherein ausgeschlossen.

joedl
19.01.05, 15:53
Danke für die Tipps, erstmal. Aber weiss niemand eine Lösung zu meinem Problem?

DrachenKaiser
19.01.05, 16:13
Bist du absolut sicher das es nicht an deinen Script Liegt?
Weil wenn phpinfo() ausgeführt wird liegt es an dein Script.
Um sicherzugehen mach mal <?php echo "Hallo Welt" ?>.

Ändere mal alle <? in <?php um,vielleicht liegt es ja daran?

PS:Schreibe dies oben in dein PHP Script rein,damit Funktioniert das Script ,auch wenn register_globals Off ist.


<?php
foreach($_GET AS $key=>$value)
{
$$key=$value;
}
?>

joedl
21.01.05, 16:38
Ich muss die Tipps leider zurückweisen ;)
Zumindest auf meinem Server (mit PHP 4.3.8 und Apache 2.0.49) laufen die Skripte problemlos.
Auch das Hello World Skrip, wie andere einfache Skripte laufen. Und dabei macht es keinen Unterschied, ob <?php oder nur <? geschrieben wird. Ich werd mal versuchen, exakt die gleiche Apache/PHP Versionen wie auf dem Server zu installieren.

EDIT: Es scheint schwierig zu sein, diese Versionen aufzutreiben. Hat jemand von euch zufälligerweise den Quellcode von PHP 4.3.8. auf der Platte? :)

joedl
25.01.05, 12:11
$bla = array_merge($_GET, $_POST, $_SESSION.......);
extract($bla);

Das hat genützt!
Danke an alle, die mir halfen. ;)