Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: Mistofelees - 07.09.26 - klo:13.06
-
Ubuntu serverin asennuksen jälkeen php ei ole kyennyt kirjoittamaan serverin levyille.
Samat scriptit toimivat edellisellä Ubuntu serveri asennuksella ongelmitta.
Uudelleenasennus johtui levyrikosta, jossa hävisi osan conf-tiedostoista
/var/log/apache2/error.log:
PHP Warning: fopen(/home/www/GPS_tracker/Ulista.txt): Failed to open stream: Read-only file system in /home/www/GPS_tracker/test.php on line 5
PHP Fatal error: Uncaught TypeError: fwrite(): Argument #1 ($stream) must be of type resource, false given in /home/www/GPS_tracker/test.php:7\nStack trace:\n#0 /home/www/GPS_tracker/test.php(7): fwrite()\n#1 {main}\n thrown in /home/www/GPS_tracker/test.php on line 7
HTML-hakemisto on tarkoituksella siirretty /var/www/html -> /home/www jo pari vuosikymmentä sitten
Testattu myös alkuperäisessä /var/www/html -hakemistossa samoin tuloksin
Ongelman testausta varten laadittu scripti:
<?php
echo "Levylle kirjoitus<br>";
echo date("h:i:s<br>");
$file="/home/www/GPS_tracker/Ulista.txt";
$lista=fopen($file,'w');
$tmp="Hello"."\n";
fwrite($lista,$tmp); //**
fclose($lista);
?>
Sama ongelma koskee kaikkia php-tiedostoja kaikissa nettihakemistoissa
Jos saman scriptin ajaa komentoriviltä, se kirjoittaa aivan normaalisti
Apachen ja php:n uudelleenasennukset on tehty jo pariin kertaan
Suojaukset (tilapäisesti):
777 root:root /home
777 www-data:www-data /home/www
777 www-data:www-data /home/www/GPStracker
777 www-data:www-data /home/www/GPStracker/test.php
777 www-data:www-data /home/www/GPStracker/
Ubuntu server DISTRIB_DESCRIPTION="Ubuntu 26.04.1 LTS" täysin puhdas uusasennus tyhjille levyille.
Apache2 2.4.66-2ubuntu2.4 asennus Ubuntun distroista
php-gd 2:8.5+99ubuntu1
php8.5 8.5.4-0ubuntu1.2
php8.5-cli 8.5.4-0ubuntu1.2
php8.5-common 8.5.4-0ubuntu1.2
php8.5-gd 8.5.4-0ubuntu1.2
php8.5-readline
Netistä ei ole viielä löytynyt mitään apua.
-
Annoin lopulta periksi ja kysyin Kuuklen mukaälyltä, jolta löytyi osa ratkaisusta:
Lyhyesti:
systemctl edit apache2
- Lisätään: (kantahakemiston lisäys riittää)
[Service]
ReadWritePaths=/home/www
- Potkaistaan Apachea:
service apache2 restart
- Tarkistetaan:
service apache2 status
Tämän jälkeen vielä permissiot järkeviksi ja pöydän siivous,
-"Starting with Ubuntu 26.04, the Apache2 service defaults to a sandboxed systemd configuration (ProtectSystem=full).
This security restriction blocks Apache and PHP from writing to system directories such as /usr, /boot, /etc, and potentially custom application directories outside of standard paths. (https://vufind.org/wiki/installation:ubuntu), (https://www.securecoding.com/blog/how-to-secure-ubuntu-based-web-server/)
To resolve this issue, you must configure a systemd override to explicitly grant Apache permission to write to your desired storage paths, or double-check standard file system permissions. (https://vufind.org/wiki/installation:ubuntu)"