Rendere Apache in grado di scrivere in file PHP con PHP in esecuzione come DSO?

Ho PHP in esecuzione come DSO. In quanto tale, lo script di installazione (che scrive a un file di configuration) non può eseguire alcuna scrittura.

Come faccio ad apache (utente: nessuno) la capacità di scrivere al file?

  • apache su centos 5.6 mi dà permessi negato errore
  • Abilitazione di mod_rewrite su Amazon Linux
  • non è ansible get la posta php () che lavora sulla versione desktop di Ubuntu con sendmail e postfix
  • Consigli per il debug di Apache con errori di segmentazione PHP
  • Apache, PHP, MySQL Lavora più velocemente in Linux rispetto a Windows?
  • impostare un host virtuale mod_proxy di base
  • Ubuntu Apache: httpd.conf o apache2.conf?
  • Certificati del lato client (Apache, Linux, OpenSSL)
  • Quanti processi dovrei specificare in un WSGIDaemonProcess durante l'esecuzione di Django tramite mod_wsgi?
  • Può un file lungo / etc / hosts rallentare la ricerca DNS?
  • C'è un gruppo di utenti web predefinito su CentOS Linux?
  • Come posso regolare automaticamente le autorizzazioni di file di repository di subversion per l'utilizzo w. Apache / DAV?
  • 4 Solutions collect form web for “Rendere Apache in grado di scrivere in file PHP con PHP in esecuzione come DSO?”

    Lo farei solo su un server di sviluppo in un ambiente protetto. Molte applicazioni PHP genereranno il file sullo schermo in modo che possa essere copiato in modo sicuro nella directory di configuration.

    Il modo rapido (e insicuro) per farlo è eseguire chmod 777 . dalla directory in cui dovrebbe andare il file. Prima di eseguire questa operazione ls -ld . per get le autorizzazioni da reimpostarle. In alcuni casi la directory richiesta non esisterà, quindi sarà necessario crearla per primo. Subito dopo che il file di configuration è stato scritto, reimpostare la directory nelle sue autorizzazioni originali. Il command corretto è probabilmente chmod 755 . o chmod 750 . eseguire dalla directory. Verificare con il command ls.

    Modificare le autorizzazioni del file di configuration in modo che Apache non possa più scrivere ( chmod ow configfile ). Le applicazioni spesso vengono fornite con file di configuration di esempio. Posizionare uno di questi nella directory di configuration e l'editing potrebbe essere un approccio migliore. Ciò richiede che tu impari e comprendi le opzioni di configuration. Potresti essere in grado di utilizzare lo script di configuration online per assistere alle modifiche.

    In un ambiente condiviso tutto diventa un po 'complicato quando si tratta di problemi di sicurezza. Cambiando la properties; di file a 'nessuno' si dà accesso Apache a tale file ma, se il module PHP non dispone di impostazioni per limitare ciascun virtualhost ad ognuna delle sue proprie directory, anche gli altri consentiranno di accedervi. Controlla come è impostato nel tuo ambiente.

    Apache di solito viene eseguito come utente 'nessuno' e gruppo 'nessuno' in modo da poter giocare con le autorizzazioni di gruppo troppo. Modificare il gruppo di file a 'nessuno' e impostare l'authorization a 664.

    Se non è ansible modificare il proprietario o il gruppo del file, FTP di solito consente di modificare le autorizzazioni. Supponendo che Apache non sia uno degli utenti / gruppi che possiedono quel file, dovresti impostarlo a 777 che è molto insicuro, ma dipende tutto dal tipo di ambiente in cui ti trovi. Forse puoi impostarlo temporaneamente , installarti app e cambiarla nuovamente a 644 o 444 (in sola lettura).

    È ansible scrivere i file di configuration in una directory temporanea come /tmp/config/ . Quindi, è ansible eseguire uno script di shell per copiare i file di configuration da /tmp/config/ nella posizione desiderata.

    Per concedere le autorizzazioni necessarie, è ansible aggiungere nobody utente al file sudoers. La voce dovrebbe essere simile a:

     nobody ALL=NOPASSWD: /path/to/your_script.sh 

    Lo script shell (non dimenticare di aggiungere l'authorization di esecuzione).

     cp -r /tmp/config/* /desired/path/to/config 

    In PHP, hai bisogno di un piccolo frammento di codice come:

     <?php $output = shell_exec('sudo /path/to/your_script.sh'); echo "$output"; ?> 

    Questo è il problema tipico che esegue PHP come un DSO con cPanel, ma si applica anche ad altre impostazioni.

    Quando si esegue questo metodo, i processi PHP vengono gestiti dall'utente che esegue httpd. Nella maggior parte dei casi, questo utente è l'utente "nessuno". Ciò significa che quando PHP interagisce con i file del file system, deve essere accessibile dall'utente "nessuno". Ciò crea problemi di autorizzazioni poiché il normale utente basato su cPanel non avrà accesso a file RW (lettura / scrittura) che sono di properties; dell'utente "nessuno" senza le modifiche autorizzate. La maggior parte delle applicazioni Web / script PHP devono scrivere a file e directory e se sono di properties; dell'utilizzatore cPanel, senza modificare le autorizzazioni nei file / directory a 777, causerà problemi e in alcuni casi rompere il tuo sito web .

    Quindi in questo caso è ansible gestire solo e solo le autorizzazioni manualmente, impostandole su 777

    Quando si esegue questo metodo PHP, è necessario gestire manualmente le autorizzazioni per ciascun utente per garantire che le applicazioni / script PHP possano leggere e scrivere i file e le directory di cui ha bisogno per funzionare.

    Oppure, se si può passare a Mod_SuPHP e non si hanno problemi di performance (in quanto DSO è molto più veloce), sarà ansible eseguire PHP come utente che esegue cPanel.

    Se trascuriamo i problemi di autorizzazioni che possono essere eseguiti con l'esecuzione di PHP attraverso il DSO, ci sono alcuni vantaggi rispetto a SuPHP. La prima è la velocità. Mod_PHP è più veloce di Mod_SuPHP. Ciò è dovuto principalmente al fatto che each richiesta elaborata da Mod_SuPHP è avvolta per essere eseguita come utente che possiede i file. Questo potrebbe non essere molto evidente nei siti di traffico più bassi, ma nei siti di traffico più elevati, può essere abbastanza veloce. Il secondo è la funzionalità completa con aggiunte di cache opcode PHP, come eAcclerator, APC e Xcache. Per mettere a nudo il beneficio completo di una cache PHP optcode, è necessario un utente condiviso che viene utilizzato quando si memorizza in cache il codice byte PHP compilato e che esegue PHP tramite un DSO esegue PHP in quanto l'utente "nessuno" riempie questa necessità. Potete sapere se il tuo server è configurato per eseguire PHP attraverso un DSO andando al WHM e guardando sotto Main >> Configurazione di servizi >> Apache Configuration. >> Configurazione PHP e SuExec

    Qui potete trovare ulteriori dettagli:

    https://helpdesk.wiredtree.com/index.php?_m=knowledgebase&_a=viewarticle&kbarticleid=1663

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.