downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

Installé en tant que module Apache> <Cas 3 : Utilisation du "doc_root" ou du "user_dir"
[edit] Last updated: Fri, 17 May 2013

view this page in

Cas 4 : Exécutable PHP à l'extérieur de l'arborescence du serveur

Une solution extrêmement sécurisée est de mettre l'exécutable PHP à l'extérieur de l'arborescence du serveur web. Dans le répertoire /usr/local/bin, par exemple. Le seul véritable inconvénient de cette méthode est que vous aurez à rajouter une ligne comme celle-ci :

Exemple #1 Ligne d'invocation de PHP

#!/usr/local/bin/php
au début de chaque fichier contenant des balises PHP. Vous devrez aussi rendre les scripts PHP exécutable. En somme, traitez le fichier exactement comme si vous aviez un autre script écrit en Perl ou en sh ou en un autre langage de script qui utilise #! comme mécanisme pour lancer l'interpréteur lui-même.

Pour que l'exécutable PHP prenne en compte les variables d'environnement PATH_INFO et PATH_TRANSLATED correctement avec cette configuration, vous devez utiliser l'option de compilation --enable-discard-path.



add a note add a note User Contributed Notes Cas 4 : Exécutable PHP à l'extérieur de l'arborescence du serveur - [2 notes]
up
0
mails dot php dot net-notes at gunter dot ohrner dot net
1 year ago
You can invoke the interpreter under Apache 2.2 running in Windows by associating the php file extension with the interpreter binary in the registry:

AddType application/x-httpd-php .php
AddHandler cgi-script .php

In the desired <Directory>-block, configure PHP CGI as follows:

Options +ExecCGI
## Use HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command
## to determine CGI script interpreter
## ("c:\program files\php-5.2.17\php-cgi.exe").
## This key must be created manually.
ScriptInterpreterSource Registry-Strict

You need to disable cgi.force_redirect in this case, which should be safe from what I understand. You could probably simply use php.exe instead of php-cgi.exe, though I'd like to have this confirmed from someone else.
up
-1
Andras Rokob <rokoba at bolyai dot elte dot hu>
6 years ago
You can avoid the need of using the shell-escaping (#! ...) in all your php scripts if you set the executable bit on them and exploit the binfmt_misc support of the Linux kernels.

 
show source | credits | stats | sitemap | contact | advertising | mirror sites