• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Entwicklungsumgebung unter MAMP läuft nicht mehr

Achim Gruber

Neues Mitglied
Wer kennt sich mit htaccess Dateien aus und kann mir helfen meine Entwicklungsumgebung wieder zum Laufen zu bringen?
Nach dem Verlust einer Festplatte habe ich MAMP frisch installiert und das Backup zurück gespielt. Leider startet dann die Webseite auf localhost, bricht aber am Zugriff auf die htaccess-Datei den Aufbau der jeweilien Unterseite ab.
Der aktive Webserver läuft noch einwandfrei. Allerdings hat das Rückkopieren der Dateien zur Entwicklungsumgebung auch nichts gebracht.
Weiß jemand einen Rat? Muss der Apache auf MAMP eine bestimmte Version haben um htaccess zu verstehen?
1725873606006.pnglokal

1725873715186.png Webserver
 
Werbung:
Ja, da finde ich im php.error.log diese Fatal Errors:
[02-Sep-2024 09:18:40 UTC] PHP Warning: Undefined array key "wahl" in D:\MAMP\htdocs\index.php on line 6
[02-Sep-2024 09:18:40 UTC] PHP Fatal error: Uncaught Error: Undefined constant "wahl" in D:\MAMP\htdocs\includes\navi_start.inc.php:3

Meine Versuche die Variabele wahl (Auswahl der Unterseite) im Vorfeld zu definieren schlägt fehl. Auf der anderen Seite ist sie auf dem Webserver ebenfalls nicht definiert, da die Dateien vom Produktivsystem in die Entwicklungsumgebung zurückgeschrieben wurden.

Index.php:

<?PHP
@SESSION_START();
ini_set("arg_separator.output","&amp;");
setlocale(LC_TIME,'de_DE@euro', 'de_DE', 'de','ge');
if (!$_GET['wahl'])
{$_SESSION['wahl']=" ";}
else
{$_SESSION['wahl']=$_GET['wahl'];}
?>


navi_start.inc.php:

<?php @SESSION_START();
##print_r ($_SESSION); $auswahl2=" ";
switch (substr($_SESSION[wahl],0,1))
{
case "V":
$auswahl1="Verein";
switch (substr($_SESSION[wahl],1,1))
{
case "VV":
$auswahl2="Vorstand";
break;
case "V1":
# $auswahl2="1. Vorsitzender" keine Funktion ?;
$auswahl2="1. Vorsitzende";
break;
case "VC":
$auswahl2="Chorleitung";
break;
case "VM":
$auswahl2="Mitglieder";
break;
}
break;
 
Werbung:
Ja, da finde ich im php.error.log diese Fatal Errors:
[02-Sep-2024 09:18:40 UTC] PHP Warning: Undefined array key "wahl" in D:\MAMP\htdocs\index.php on line 6
[02-Sep-2024 09:18:40 UTC] PHP Fatal error: Uncaught Error: Undefined constant "wahl" in D:\MAMP\htdocs\includes\navi_start.inc.php:3
Das sind beides Fehler bei denen das Fehler-Level mit PHP 8 angehoben wurde - falsch war beides aber schon immer:
if (!$_GET['wahl'])
{$_SESSION['wahl']=" ";}
else
{$_SESSION['wahl']=$_GET['wahl'];}
Du versuchst auf $_GET['wahl'] zuzugreifen ohne (z.B. mit isset) zu prüfen ob der Key überhaupt existiert - wenn nicht gibt es eben eine Fehlermeldung. In diesem Fall ließe sich dein komplettes if-Konstrukt aber durch eine Zeile ersetzen: $_SESSION['wahl'] = $_GET['wahl'] ?? ' '; Allerdings hat das den Nachteil dass du dir den Wert in $_SESSION bei jedem Request ohne einen Wert in $_GET['wahl'] wieder überschreibst, das ist also u.U. nicht das was du möchtest (oder $_SESSION ist hier überhaupt nicht nötig).

switch (substr($_SESSION[wahl],0,1))
Oben weißt du doch noch wie es richtig geht: wahl muss in Anführungszeichen stehen da es die Konstante wahl wohl nicht gibt sondern das ein String ist.

switch (substr($_SESSION[wahl],1,1))
{
case "VV":
Das wird nicht funktionieren: substr liefert nur ein Zeichen, da kann die Bedingung nicht zutreffen.

Außerdem: @ zum Unterdrücken von Fehlern ist eine ganz schlechte Idee (und funktioniert ab PHP8 auch nicht mehr so wie in früheren Versionen) und ?> solltest du am Ende von PHP-Dateien weglassen.
 
Falsch:
PHP:
if (!$_GET['wahl'])
Richtig:
PHP:
if (empty($_GET['wahl']))
Falsch:
PHP:
switch (substr($_SESSION[wahl],1,1))
Richtig:
PHP:
switch (substr($_SESSION['wahl'],1,1))
 
Ich habe die Änderungen in der Entwicklungsumgebung übernommen, ohne eine Wirkung zu erzielen. Nichts desto Trotz kopierte ich die Verbesserungen auch auf den Live-Webserver. Die Webseite www.gesangvereinkaufering.de funktioniert noch.
Leider sagen mir die "veralteten" Fehler in den logs gar nichts (siehe Anlage). Die MySQL Fehler ignoriere ich, weil keine Datenbank installiert ist.
 

Anhänge

  • php_error - Kopie.zip
    2,9 KB · Aufrufe: 4
Werbung:
Das, was in apache_error.log und mysql_error.log steht, kannst du ignorieren, denn das sind nur Hinweise und keine Fehler.
In php_error.log steht allerdings etwas, was du korrigieren solltest:
PHP Warning: PHP Startup: Unable to load dynamic library 'php_mysqli.dll'
D.h., dass die MySQLi-Extension nicht geladen wird und das könnte zu Problemen führen, wenn du MySQL nutzen willst.
Die anderen Zeilen sind nicht schön, aber auch nicht dramatisch.
 
Danke für die Antwort. Ich habe MySQL erst gar nicht installiert, weil es nicht gebraucht wird. Das hatte vor dem Plattencrash auch nicht gestört.
Mich wundert nur, dass der Aufbau der Webseite bis zur .htaccess Datei funktioniert und dann dort - oder danach, den Aufbau der über "wahl" selektierten Sub-Seite abbricht. Und an der Stelle bin ich als wenig geübter php Programmierer hilflos.
 
Also, dein Problem ist ja auf der lokalen Instanz, nicht auf dem Produktionsserver. Und es scheint, als ob das Script ja teilweise ausgeführt wird (sonst würde der Header ja nicht erscheinen).

Wenn es ein reines .htaccess Problem wäre, dann würde das Script ja gar nicht ausgeführt und es würde eine Apache Meldung geloggt.

Kannst Du bitte nochmal auf Deiner lokalen Umgebung die entsprechende Seite aufrufen und dann die folgenden Sachen hier anfügen:
  • Ist innerhalb des Quelltextes der aufgerufenen Seite irgendeine Fehlermeldung ganz am Schluß zu sehen?
  • Apache Log (welcher HTTP Return Code)
  • PHP Error Log

Kannst Du auch einmal ganz am Ende Deiner Test-Seite nochmal eine Ausgabe einbauen (z.B. ein echo für "Ende Seite"), um zu sehen ob das Script ganz prozessiert wurde.

Ansonsten klingt es auch etwas so, als ob die PHP Version auf der Live-Seite und die PHP-Version auf Deinem lokalen Rechner nicht gleich sind. Das könntest Du durch einfach eine Seite mit
PHP:
<?php   phpinfo();
testen.
 
Werbung:
Zurück
Oben