2010-09-26 4 views
1

J'ai activé PHP 5.3.2 et Apache 2.2.14 sur mon installation de Mac OS X Snow Leopard et j'ai confirmé que je me connectais avec un appel à phpinfo();PHP sur Mac OS X - Chargement des extensions inexistantes par défaut - Résultats phpinfo() erronés?

Au démarrage inital, il semble que toutes les extensions possibles sont chargés, comme l'appel à print_r (get_loaded_extensions()) implique:

Array 
(
    [0] => Core 
    [1] => date 
    [2] => ereg 
    [3] => libxml 
    [4] => openssl 
    [5] => pcre 
    [6] => sqlite3 
    [7] => zlib 
    [8] => bcmath 
    [9] => bz2 
    [10] => calendar 
    [11] => ctype 
    [12] => curl 
    [13] => dom 
    [14] => hash 
    [15] => fileinfo 
    [16] => filter 
    [17] => ftp 
    [18] => gd 
    [19] => session 
    [20] => iconv 
    [21] => json 
    [22] => ldap 
    [23] => mbstring 
    [24] => standard 
    [25] => mysqlnd 
    [26] => SPL 
    [27] => odbc 
    [28] => mysqli 
    [29] => PDO 
    [30] => pdo_mysql 
    [31] => pdo_sqlite 
    [32] => Phar 
    [33] => posix 
    [34] => Reflection 
    [35] => mysql 
    [36] => shmop 
    [37] => SimpleXML 
    [38] => snmp 
    [39] => soap 
    [40] => sockets 
    [41] => SQLite 
    [42] => exif 
    [43] => sysvmsg 
    [44] => sysvsem 
    [45] => sysvshm 
    [46] => tokenizer 
    [47] => xml 
    [48] => xmlreader 
    [49] => xmlrpc 
    [50] => xmlwriter 
    [51] => xsl 
    [52] => zip 
    [53] => apache2handler 
) 

Quand j'édité le php.ini.default et créé le/private/etc/php.ini, j'ai commenté toutes les extensions disponibles pour empêcher le chargement (pour l'instant j'essayais juste d'obtenir une ligne de base). Même après avoir redémarré Apache avec les nouvelles informations php.ini, toutes les extensions sont toujours en cours de chargement. Je suppose que puisque aucune extension n'est explicitement chargée, PHP réagit de la même manière que si je n'avais pas de php.ini. Ce qui me rend perplexe, c'est que lorsque je tente de trouver les fichiers de bibliothèque associés aux extensions "chargées", je peux trouver AUCUN! J'ai cherché tout mon disque dur en tant qu'utilisateur root à la recherche de toute trace des fichiers de bibliothèque * .so et n'en ai trouvé aucun (ex: appel pour trouver/-name 'mysql' ne renvoie aucun fichier qui soit une extension php). Et il n'y a qu'un seul fichier * .so dans le répertoire/usr/lib/php/extensions/non-debug-non-zts-20090626 listé comme extension_dir pour php. Pourquoi php dirait qu'il est en train de les charger avec succès alors?

Voici le résultat de l'extension de gd phpinfo() comme exemple: http://www.concentricsoft.com/downloads/phpinfo_sc1.jpg

Je confirme que les modifications que j'apportées au fichier php.ini est entré en vigueur: Je mis le error_log = à un fichier et je suis en mesure écrire à l'aide d'un appel à error_log ($ string, 0); Je n'ai pas encore essayé d'exécuter du code qui essaierait d'utiliser l'une des extensions que PHP dit être chargées, donc je suppose que c'est mon prochain mouvement, mais je voulais juste voir si quelqu'un d'autre là-bas a résolu ce problème et si oui comment.

+1

Ces extensions n'ont pas besoin de se présenter comme des fichiers séparés sur votre disque dur. Ils pourraient aussi être liés statiquement dans le binaire PHP. – halfdan

Répondre

1

De nombreuses extensions PHP peuvent être construites statiquement, dans le cadre de l'exécutable php au lieu de fichiers objets partagés.

Vous pouvez même build PECL extensions statically.

+0

Je vois, donc s'il est construit dans l'exécutable php alors bien sûr il va charger, peu importe ce qui est spécifié dans le fichier php.ini ... est logique. Merci pour l'aide. Je voulais juste m'assurer que je ne deviendrais pas fou. –