Forcer l'accès à un script PHP en ligne de commande

Accueil Tags Recherche

14 Janvier 2014

Forcer l'accès à un script PHP en ligne de commande

Comment savoir si votre script PHP est exécuté via une ligne de commande, ou via le protocole HTTP ?

La constante PHP_SAPI

La constante PHP_SAPI (pour Server API) vous permet de connaître le type de l’interface qui a appelé le script. Elle a été introduite avec PHP 4.2.0, afin de remplacer la fonction php_sapi_name() (introduite avec PHP 4.0.1).

Elle peut avoir pour valeur (liste non exhaustive extraite de la documentation) :

  • aolserver
  • apache
  • apache2filter
  • apache2handler
  • caudium
  • cgi (jusqu’en PHP 5.3)
  • cgi-fcgi
  • cli
  • continuity
  • embed
  • isapi
  • litespeed
  • milter
  • nsapi
  • phttpd
  • pi3web
  • roxen
  • thttpd
  • tux
  • webjames

La valeur qui nous intéresse est cli, pour Command LIne. En utilisant ce genre de petite condition, vous serez alors capable de restreindre l’accès à vos scripts en ligne de commande :

<?php
if(PHP_SAPI != 'cli') die('L\'accès à ce script n\'est possible qu\'en ligne de commande.');
// …

Liens

La constante PHP_SAPI La fonction php_sapi_name()