2011-10-08 12 views
5

Non sono sicuro se si tratta di una configurazione php o di un problema con il file linux. Il problema che sto avendo è quando un file viene caricato tramite PHP utilizzando move_uploaded_file() nella directory che ha gruppo insieme a ubuntu e proprietario impostato su www-data, il file caricato proprietario e le autorizzazioni del gruppo cambiano a www-data che causa l'arrivo di problemi per il mio script python ed esegue la sua attività sul file caricato.I permessi di gruppo e proprietario sono errati quando php carica i file

esempio:

move_uploaded_file($tempFile,$targetSAVE); 

- $ targetSAVE directory è impostato su:

group: ubuntu 
owner: www-data 
permissions: 0755 

--php file inserito cambia proprietario e gruppo a www-data

new file changes to: 
    group: www-data <-- need this set to *ubuntu* 
    owner: www-data 
    permissions: 0755 

sceneggiatura --python ha bisogno del gruppo di file caricato impostato ubuntu

come posso configurare PHP per impostare la proprietà o un gruppo di file caricato in ubuntu o se questo è un problema di autorizzazione file linux come posso risolvere questo?

Tutte le directory e sottodirectory sono impostati: gruppo: ubuntu proprietario: ubuntu permesso: 0755 tranne la directory dei file vengono caricati, questo è impostato su:

group: ubuntu 
owner: www-data 
permissions: 0755 

risposta

3

Trovato la soluzione. Dopo aver tirato fuori i capelli e provato tutte le altre risposte è risultato essere molto semplice ecco cosa ha funzionato.

chown -R ubuntu:www-data /var/www/ 
chmod -R 775 /var/www/ 

Successivamente lo script python eseguito perfettamente da php.

0

Credo che aggiungerei una direttiva chirp alla fine dello script PHP, se questo funzionerà nel tuo caso. http://us.php.net/manual/en/function.chgrp.php

Cerca in/etc/passwd per ottenere l'ID numerico per l'utente "ubuntu".

Nota dai documenti: "Solo il superutente può modificare arbitrariamente il gruppo di un file, altri utenti possono modificare il gruppo di un file in qualsiasi gruppo di cui tale utente è membro."

1

Ciò accade perché PHP viene eseguito come utente che esegue il server Web. In effetti tutti i siti web del tuo sistema funzioneranno come questo utente/gruppo e quindi avranno accesso a leggere i file e le directory di ciascuno di essi creati da script php.

Installare Apache mod suPHP è probabilmente la soluzione più semplice a questo problema. Ciò consentirà di eseguire script php in un host virtuale come utente e gruppo specifici. Puoi anche eseguire PHP come CGI e usare Apache suEXEC ma è un po 'più complicato configurare suPHP.

In alternativa, si dovrebbe essere in grado di copiare i file dagli script all'utente/gruppo appropriato, ma l'effetto sarà che il server Web non può più leggere/modificare quei file dopo averne cambiato la proprietà.

Problemi correlati