• Community Manager

    Abilitare Php Su Exec Apache

    Questo tutorial l'ho trovato sul blog di Juanin: Attivare php come modulo CGI su un virtualhost

    ATTENZIONE - PREMESSA: Se sul server è installato php4 sostituire php4 a php5.

    Individuare il file di configurazione del Virtualhost per il quale si vuole effettuare la modifica. (Solitamente si trova in /etc/apache2/sites-available/ ma ad ognuno il suo.)

    Una volta trovato il file del Virtualhost che vi interessa aggiungere a quest?ultimo le seguenti direttive:

    SuexecUserGroup "#1001" "#1002"
    ```Sostituendo i corretti valori di Uid e Gid (in forma numerica) con il quale si vuol fare girare gli script PHP (generalmente questi coincidono con Uid e Gid dell?utente FTP).
    
    
     **Nota:**
    Si possono ricavare gli Uid e Gid numerici di un utente di cui si conosce il nome-utente di login con il
    comando:
    
    

    id nome-utente
    uid=1001(nome-utente) gid=1002(nome-utente) groups=1000(nome-utente), 20(dialout),24(cdrom),25(floppy),29(audio),44(video),46(plugdev)

    
     Una volta ricavato l?uid e inserita nel virtualhost la direttiva con gli id corretti, aggiungere allo stesso file le seguenti righe:
    
    

    AddHandler php-script .php
    Action php-script /cgi-bin/php5

     E verificare che nel Virtualhost sia presente la direttiva **?ScriptAlias?** simile a quanto riportato sotto:
    
    

    ScriptAlias /cgi-bin/ /home/sito-web/cgi-bin/
    <Directory /home/sito-web/cgi-bin>
    allow from all
    </Directory>

     Successivamente è necessario copiare dentro la directory cgi-bin del Virtualhost i file php5 ed il link simbolico php -> php5 utilizzando il seguente comando:
    
    

    cp -a /usr/lib/cgi-bin/php* /home/sito-web/cgi-bin/

     Impostare i permessi sui file copiati dentro la cgi-bin dell?utente in modo che l?utente ed il gruppo specificato in **?SuexecUserGroup?** ne siano i proprietari:
    
    

    chown -R 1001:1002 /home/sito-web/cgi-bin/php*

     Verificare la configurazione di Apache per assicurarsi che le modifiche effettuate siano corrette usando il comando:
    
    
    

    apache2ctl configtest

    
     Riavviare Apache con il seguente comando:
    
    

    /etc/init.d/apache2 restart

     Verificare il risultato tramite questo script di test:
    
    

    <?php
    // Test per verificare se PHP sta girando come modulo CGI
    echo "Utente con il quale sta girando lo script PHP ed il processo di Apache:";
    echo "<br><br>";
    echo "Risultato whoami:";
    echo "<br>";
    echo exec('whoami');
    echo "<br><br>";
    echo "Risulato id:";
    echo "<br>";
    echo exec('id');
    echo "<br><br>";
    echo "Verificare le Server API per determinare in che modalità sta girando PHP";
    // Se PHP gira come CGI sarà riportato: "Server API GI/FastCGI"
    // Altrimenti il risultato sarà: "Server API Apache 2.0 Handler"
    echo "<br><br>";
    phpinfo();
    ?>


  • User Attivo

    Perchè si dovrebbe avere questa necessità visto che è penalizzante dal punto di vista delle prestazioni?Quali soon i vantaggi?


  • User

    Giusto come monito a chi tramite i motori di ricerca si imbattesse in questo vecchio thread : SuExec è sorpassato ormai. Se si vogliono separare i privilegi utenti all'interno oggi si usa PHP-FPM che promette performance velocissime e può girare con permessi UID/GID separati per ogni vhost.