Puncte:0

Ce ar împiedica php-fpm (8.0.16) să poată scrie într-un sistem de fișiere montat NFS?

drapel rs

Am o instanță php-fpm (8.0.16) care nu poate scrie fișiere într-o partajare NFS. Folosesc un script php simplu pentru testare:

<?php

ini_set('erori_afișare', 1);
ini_set('raportare_eroare', E_ALL);

$fp = fopen('test.txt', 'a');

fwrite($fp, 'test'); 

Când rulați prin php-fpm, într-un director care este o partajare NFS, se primește următoarea eroare:

Avertisment: fopen(test.txt): Nu s-a putut deschide fluxul: sistem de fișiere doar pentru citire în /path/to/nfs/share/test-write.php

Cu toate acestea, următorul cod:

<?php

ini_set('erori_afișare', 1);
ini_set('raportare_eroare', E_ALL);

$fp = fopen('/tmp/test.txt', 'a');

fwrite($fp, 'test');

functioneaza conform asteptarilor.

Scriptul funcționează atunci când este rulat din linia de comandă ca același utilizator care este folosit pentru a rula php-fpm atât într-un director pe o partajare NFS, cât și în /tmp. În plus, scriptul funcționează conform așteptărilor pe versiunile anterioare de php prin php-fpm.

djdomi avatar
drapel za
se pare că www-data nu are acces la scriere la dispozitive. sau în funcție de ce utilizator decideți să utilizați și să montați. în plus, apparmor poate juca și în astfel de petrecere
drapel de
Conform mesajului de eroare, volumul NFS a fost exportat în modul doar citire
cplater avatar
drapel rs
@kofemann Am exclus acest lucru scriind în volumul NFS prin CLI. Pot rula același fișier php ca user:group apache:apache din php (cli) și funcționează.
Puncte:0
drapel rs

În fișierul systemd php-fpm.service a existat o setare:

# Montează directoarele /usr, /boot și /etc numai în citire pentru procesele invocate de această unitate.
ProtectSystem=plin

Acesta este ceea ce a împiedicat php-fpm să poată scrie în partajarea NFS, deoarece a fost montat într-un subdirector al /usr.

După cum se menționează Aici puteți trece peste acest lucru folosind systemctl editați php-fpm.service și adăugarea de căi care necesită acces la scriere:

[Serviciu]
ReadWritePaths=\cale\care\are nevoie de\scriere\acces

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.