est-il possible de vérifier si le site Web (PHP) fonctionne localement ou sur un serveur hébergé?
Je souhaite activer certains journaux si le site Web fonctionne localement et que je ne veux pas que ceux-ci apparaissent sur le site en ligne ..
Je peux définir une variable Serveur local: Wamserver 2.0 / Apache
Webserver: Apache p> $ local = 1; code> mais je vais devoir changer cela avant de télécharger. Y a-t-il de toute façon pour automatiser cette tâche? P>
7 Réponses :
Vérifiez $ _ Server ['Remote_addr'] == '127.0.0.1' code>. Cela ne sera vrai que s'il fonctionne localement. Sachez que cela signifie également que cela signifie également local vers le serveur. Donc, si vous avez des scripts exécutés sur le serveur qui apportent des demandes à vos pages PHP, elles satisferont également cette condition. P>
Merci ça a fonctionné! $ local = $ _Server ['Remote_addr'] == '127.0.0.1'? 1: 0; code> est ce que j'ai utilisé :)
Notez que si vous avez effectué n'importe quel type de travail sur votre réseau 127.0.0.1 code> peut ne pas être l'adresse IP de votre serveur. Assurez-vous de remplacer la propriété intellectuelle ci-dessus avec l'adresse IP réelle de votre serveur.
Autorisez également certains serveurs (comme Mac OSX) signalant la valeur IPv6, vous auriez donc besoin de: $ local = ($ _server ['"Remote_addr'] == '127.0.0.1' || ':: 1') < / code> ou similaire. Vous pouvez également utiliser la valeur http_host si votre environnement local utilise un nom d'hôte différent comme MySite.Local, etc.
@Matthieu localhost n'a pas d'importance car nous parlons des adresses IP. Merci pour les commentaires Charles et LDG!
@ La réponse de Kepppla fait beaucoup plus de sens.
Cela ne fonctionne que sur un environnement Web, ne fonctionnera pas sur PHP CLI.
@Pablopazos La question pose explicitement une demande d'application Web.
Ce n'est pas directement la réponse à votre question, mais à mon avis, la meilleure façon. Dans un processus de déploiement automatisé, définissez une variable comme Vérification de la "localité" est à mon avis la mauvaise façon: vous ne voulez pas montrer vos journaux à chaque visiteur local (un proxy peut en être un), mais seulement lorsqu'il est déployé dans un environnement de test em> . P>
Un outil populaire pour le déploiement automatisé est Capistrano , il devrait y avoir php OutilsCentriques aussi. P> local = true code>, comme d'autres valeurs de configuration (par exemple, votre connexion DB) ne serait pas manuelle, une erreur d'erreur, une tâche. P>
Si quelqu'un visitez votre site via Web, l'adresse IP que vous voyez ne sera jamais 127.0.0.1 code> (ou
:: 1 code> pour IPv6), quelle que soit l'utilisation d'un Procuration. (Sauf si bien sûr, vous exécutez le proxy vous-même sur le même serveur;)
Jenkins et Cruisecontrol avec PHPunderControl sont également bons pour une intégration continue avec PHP.
@Michael Mior: Oui, c'était le cas, proxy sur la même machine.
J'ai construit cette fonction qui vérifie si le nom de serveur fort> actuel strong> a <?php
function isLocal ()
{
return !checkdnsrr($_SERVER['SERVER_NAME'], 'NS');
}
?>
Juste au cas où cela est utile à quiconque, j'ai fait cette fonction comme les réponses ci-dessus ne faisaient pas vraiment ce que je cherchais:
function is_local() { if($_SERVER['HTTP_HOST'] == 'localhost' || substr($_SERVER['HTTP_HOST'],0,3) == '10.' || substr($_SERVER['HTTP_HOST'],0,7) == '192.168') return true; return false; }
Pour la vérification de l'adresse IP de l'hôte, utilisez $ _ serveur ['serveur_addr'] code>
Ne fonctionne pas sur CLI.
$whitelist = array( '127.0.0.1', '::1' ); if(!in_array($_SERVER['REMOTE_ADDR'], $whitelist)){ // not valid }
Je pense que la meilleure approche consiste à "faux" un mode de test, qui peut être fait en créant un fichier dans votre environnement local. Cette approche est 100% compatible avec tout système d'exploitation avec tout système d'exploitation et vous pouvez utiliser plusieurs fichiers de test au cas où vous voulez une approche plus granulaire (par exemple,
Quand j'ai utilisé cette approche, j'ai créé un fichier texte vide appelé test.txt code>, puis utilisé le code suivant:
développement.txt code>,
test.txt code>,
stadification.txt code>, ou
production.txt code>) afin de personnaliser votre processus de déploiement. p> p>
Votre serveur distant est peu susceptible d'avoir une lecteur C! Donc je cours avec ceci: