• 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: 2
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.
 
Zurück
Oben