Discussion:
PHP 8 und Sessions
(zu alt für eine Antwort)
Heiko
2022-11-14 07:35:19 UTC
Permalink
Hi Leute,
nach rund einem Jahr habe ich mal ein kleines unschönes Problem, das ich
gerne beseitigt hätte.
Es geht um Sessions in PHP 8.

Hier ein kurzer Codeschnipsel, der mein "Problemchen" verdeutlicht:

<?PHP session_start()
$_SESSION['meinname'] = "Max Mustermann";
echo $_SESSION['meinname'];
?>

Das Script funktioniert soweit einwandfrei und es wird "Max Mustermann"
ausgegeben, aber im Fehlerlog steht dazu Folgendes:

-----[ Fehlerlog ]-----
[Mon Nov 14 08:18:37.139438 2022] [proxy_fcgi:error] [pid 9813] [client
xxx.xxx.xxx.xxx:52893] AH01071: Got error 'PHP message: PHP Warning:
Undefined array key "meinname" in
/var/www/vhosts/example.com/httpdocs/test.php on line 2
-----[Fehlerlog Ende ]-----

Okay, es ist nur eine Warnung und kein eigentlicher Fehler.
Aber wie kann ich mit PHP 8 im PHP-Code diese Warnung vermeiden, ohne
error_reporting zu ändern?
Diese Warnhinweise blähen die error.log ziemlich heftig auf, weil ich
recht viel mit $_SESSION arbeite.

Gruß
Heiko
Jakob YANAGIBASHI
2022-11-15 22:51:31 UTC
Permalink
Post by Heiko
Aber wie kann ich mit PHP 8 im PHP-Code diese Warnung vermeiden, ohne
error_reporting zu ändern?
Habe PHP 8.1 laufen über PHP-FPM. Folgender Code:
```
<?php
error_reporting(-1);
session_start();
$_SESSION["foo"] = "bar";
echo $_SESSION["foo"];
```

Error Log bleibt leer. Deine Warnung sollte auch eigentlich nur erscheinen,
wenn besucht wird, von einem Array-Eintrag zu lesen, der vorher nicht
gesetzt wurde. Egal ob im Session-Array oder nicht. Dieser Code erzeugt bei
mir einen vergleichbaren Fehler:
```
<?php
error_reporting(-1);
session_start();
$_SESSION["foo"] = "bar";
echo $_SESSION["foobar"];
```

Nämlich:
```
WARNING: [pool www] child 16633 said into stderr: "NOTICE: PHP message: PHP
Warning: Undefined array key "foobar" in /var/www/test.php on line 5
```

Grüße

Jakob
Heiko
2022-11-16 17:26:11 UTC
Permalink
Vielen Dank. Dann werde ich das morgen gleich mal auf's Genaueste checken.
Post by Jakob YANAGIBASHI
Post by Heiko
Aber wie kann ich mit PHP 8 im PHP-Code diese Warnung vermeiden, ohne
error_reporting zu ändern?
```
<?php
error_reporting(-1);
session_start();
$_SESSION["foo"] = "bar";
echo $_SESSION["foo"];
```
Error Log bleibt leer. Deine Warnung sollte auch eigentlich nur erscheinen,
wenn besucht wird, von einem Array-Eintrag zu lesen, der vorher nicht
gesetzt wurde. Egal ob im Session-Array oder nicht. Dieser Code erzeugt bei
```
<?php
error_reporting(-1);
session_start();
$_SESSION["foo"] = "bar";
echo $_SESSION["foobar"];
```
```
WARNING: [pool www] child 16633 said into stderr: "NOTICE: PHP message: PHP
Warning: Undefined array key "foobar" in /var/www/test.php on line 5
```
Grüße
Jakob
Arno Welzel
2022-11-17 13:54:13 UTC
Permalink
Post by Heiko
Hi Leute,
nach rund einem Jahr habe ich mal ein kleines unschönes Problem, das ich
gerne beseitigt hätte.
Es geht um Sessions in PHP 8.
<?PHP session_start()
Da fehlt ein ";" am Ende.
Post by Heiko
$_SESSION['meinname'] = "Max Mustermann";
echo $_SESSION['meinname'];
?>
Das Script funktioniert soweit einwandfrei und es wird "Max Mustermann"
Nein, es funktioniert nicht einwandfrei, weil Du ein ";" in der ersten
Zeile vergessen hast.
--
Arno Welzel
https://arnowelzel.de
Loading...