web-dev-qa-db-fra.com

Vérifier les extensions dynamiquement chargées PHP à partir de la ligne de commande

Je vérifiais le manuel PHP pour comprendre les différents types d'extensions PHP (modules PHP). Il existe des modules Zend (principalement pour les gourous PHP), des modules intégrés et des modules externes.

Existe-t-il un moyen de savoir à partir de la ligne de commande si un module PHP a été chargé dynamiquement ou s'il est intégré au binaire PHP?

Je veux dire: avec php -m J'obtiens tous les modules chargés, mais je voudrais savoir lesquels sont intégrés et lesquels sont externes.

20
rodrunner

Je ne suis pas sûr que cela soit possible à partir du code PHP code ordinaire, il peut y avoir des appels internes à Zend que vous pouvez faire à partir d'une extension de votre choix. Cependant, il pourrait y avoir une manière effrontée de deviner, en vérifiant si une extension chargée a une bibliothèque dynamique à la recherche probable disponible ...

$extdir=ini_get('extension_dir');

$modules=get_loaded_extensions();
foreach($modules as $m){
    $lib=$extdir.'/'.$m.'.so';
    if (file_exists($lib)) {
        print "$m: dynamically loaded\n";
    } else {
        print "$m: statically loaded\n";
    }
}

Ce n'est pas infaillible, mais cela pourrait vous suffire!

2
Paul Dixon

Exécutez simplement cette commande sur la ligne de commande:

php -m

ou ceci pour plus d'informations:

php -i

J'espère que cela t'aides.

55
mineroot

1) Courir

php -i

à partir de la sortie, recherchez les paramètres suivants:

Loaded Configuration File - ceci spécifiera l'emplacement du fichier php.ini utilisé par votre php.

Scannez ce répertoire pour les fichiers .ini supplémentaires - si ce n'est pas vide, certains des fichiers .ini dans ce répertoire chargeront dynamiquement les extensions php.

Fichiers .ini supplémentaires analysés - Fichiers .ini chargés à partir du répertoire spécifié dans le paramètre précédent.

Si vous utilisez Linux, vous pouvez:

php -i | grep -e "Loaded Configuration File" -e "Scan this dir for additional .ini files" -e "Additional .ini files parsed"

2) Renommez votre fichier php.ini et renommez le dossier avec des fichiers .ini supplémentaires.

3) Répétez l'étape # 1 et vérifiez que fichier de configuration chargé et fichiers .ini supplémentaires analysés ont tous deux la valeur (aucun)

4) Courir

php -m

Vous verrez maintenant une liste contenant uniquement les extensions intégrées au binaire php.

7
Hillel Barak