- Home
- Categorie
- Coding e Sistemistica
- Hosting e Cloud
- Abilitare Php Su Exec Apache
-
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/php5E 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();
?>
-
Perchè si dovrebbe avere questa necessità visto che è penalizzante dal punto di vista delle prestazioni?Quali soon i vantaggi?
-
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.