GNU/Linux >> Linux Esercitazione >  >> Linux

file_put_contents non crea file txt

Ho avuto lo stesso problema di recente e mi sono imbattuto in questa domanda. Sfortunatamente choppyfireballs l'OP ha detto in un commento che ha trovato la sua soluzione e ha appena accettato una risposta che non stava aiutando nessuno di noi ... Quindi, dopo una ricerca e un successo, creare file_put_contents funziona di nuovo ho deciso di condividere la mia soluzione.

I permessi dei miei file e directory erano ok per accettare qualsiasi scrittura (assicurati che le tue directory siano chmod 757 questo darà la radice e altri la concessione per scrivere i file nella posizione). Se ancora non funziona come non ha funzionato per me, è perché il tuo sistema è probabilmente SELinux (Security Enhanced Linux).

Se vuoi essere sicuro scrivi setenforce 0 questo trasformerà selinux in modalità permissiva, esegui di nuovo lo script, se funziona significa che il problema è ben descritto.

In tal caso attiva selinux sul retro setenforce 1 e prova ls -Zl nella directory in cui si trova la directory del tuo progetto. questo ti darà una linea come

drwx---r-x.  9  root   root  system_u:object_r:httpd_sys_content_t:s0  4096  Dec  8  00:25  project

o qualcosa di diverso ma httpd_sys_content_t se hai usato chcon per trasferire il contesto da una directory a questa. ma se non hai httpd_sys_content_t va bene perché dobbiamo comunque cambiare il contesto di quella directory.

prima devi accettare qualsiasi public_content_rw_t contesti per scrivere file. Digita

setsebool -P httpd_anon_write on

Questo imposterà (P)ermanentemente SELinux boolean httpd_anon_write a true e qualsiasi contesto denominato public_content_rw_t avrà i diritti per scrivere qualsiasi file nella propria posizione.

Ora devi dire a SELinux che la directory del tuo progetto è public_content_rw_t o non sarai ancora in grado di scrivere file. Digita :

semanage fcontext --add --type public_content_rw_t "/project(/.*)?"

e restorecon -RvF /project per dire a selinux per applicare le specifiche di cui sopra.

Ora la tua directory è public_content_rw_t e dovresti essere in grado di scrivere file.


Il tuo problema è probabilmente dovuto al fatto che Apache non dispone delle autorizzazioni per scrivere nella posizione del file che hai specificato. Vai in quella directory e controlla i permessi e la proprietà del gruppo con ls comando:

cd "My working file location"
ls -l .

Nell'output sono presenti tre colonne che mostrano le autorizzazioni, il proprietario e il gruppo per la directory. Molto probabilmente sono di proprietà di root e non hanno i permessi per apache per scrivere nella directory.

In tal caso, verrà visualizzato un errore nel registro di Apache quando tenta di creare il file. Prova a seguire i tuoi log durante l'esecuzione dello script nel tuo browser:

tail -f /var/log/apache2/error.log

Linux
  1. File di gatto con directory?

  2. Scrivi tutto Tmux Scorri indietro su un file?

  3. Errore:Tcl.h non trovato (nessun file o directory di questo tipo)?

  4. file:comando non trovato

  5. Esclusione della directory durante la creazione di un file .tar.gz

Bash:Scrivi su file

Perché Nullglob non è predefinito?

Tar:estrarre un singolo file in una directory senza creare sottocartelle?

Core scaricato, ma il file core non si trova nella directory corrente?

pip install pickle non funziona - nessun file o directory di questo tipo

xauth non crea il file .Xauthority