Comment permettre le passage de paramètre en PHP ?
Exemple du problème
Voici un exemple simple afin de montrer le problème :
Éditez un script "
testphp.php"
[root@nsXXXX root]# cd /home/ovh/www
[root@nsXXXX root]# pico testphp.php
et mettez-y le contenu suivant :
<?
if (!$contenu)
{
$contenu="Rien";
}
echo "Le paramètre passé contient contenu=<b>$contenu</b>";
echo "<i>Si Rien alors l'option register_globals est à Off</i>";
?>
Testons donc ce petit script en l'exécutant par url :
http://nsXXXX.ovh.net/testphp.php?contenu=camarche
Vous devriez avoir ceci :
Le paramètre passé contient contenu=
Rien
"
Si Rien alors l'option register_globals est à Off"
Solution
Il faut pour cela activer une option dans le fichier php.ini Donc vous localisez le fichier puis vous l'éditez pour mettre l'option
register_globals à On.
Ceci se fait bien sur via SSH (cf guide
http://guides.ovh.net/SshSurServeurDedie/).
[root@nsXXXX root]# locate php.ini
[...]
/usr/local/lib/php.ini
[root@nsXXXX root]# cat /usr/local/lib/php.ini | grep -i register_globals
; register_globals to be on; Using form variables as globals can easily lead
register_globals = Off
[root@nsXXXX root]# pico /usr/local/lib/php.ini
[root@nsXXXX root]# cat /usr/local/lib/php.ini | grep -i register_globals
; register_globals to be on; Using form variables as globals can easily lead
register_globals = On
Ensuite:
- Si PHP est en module il faudra relancer Apache afin de prendre en compte la modification :
[root@nsXXXX root]# /etc/init.d/httpd restart
- Si PHP est en cgi pas besoin.
Vous pouvez tester à nouveau le script en exemple.
http://nsXXXX.ovh.net/testphp.php?contenu=camarche
Vous devriez avoir ceci maintenant :
Le paramètre passé contient contenu=
camarche
"
Si Rien alors l'option register_globals est à Off"