【发布时间】:2010-09-26 23:57:15
【问题描述】:
我在安装的 Mac OS X Snow Leopard 上启用了 PHP 5.3.2 和 Apache 2.2.14,并确认我正在通过调用 phpinfo() 连接到它;
在初始启动时,似乎正在加载所有可能的扩展,因为对 print_r(get_loaded_extensions()) 的调用暗示:
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
)
当我编辑 php.ini.default 并创建 /private/etc/php.ini 时,我注释掉了所有可用于阻止加载的扩展(现在我只是想获得一个基线)。即使在使用新的 php.ini 信息重新启动 Apache 之后,所有的扩展仍然在加载。我的猜测是,由于没有显式加载任何扩展,PHP 的反应方式与我没有 php.ini 时相同。
让我感到困惑的是,当我尝试查找与“已加载”扩展名关联的库文件时,我找不到 NONE!我以 root 用户身份搜索了我的整个硬盘驱动器,寻找 *.so 库文件的任何痕迹,但没有找到(例如:调用 find / -name 'mysql' 返回没有 php 文件扩展库)。在 /usr/lib/php/extensions/no-debug-non-zts-20090626 目录中只有一个 *.so 文件被列为 php 的 extension_dir。那为什么php会说是成功加载了呢?
这里以 phpinfo() 的 gd 扩展结果为例:http://www.concentricsoft.com/downloads/phpinfo_sc1.jpg
我确认我对 php.ini 文件所做的更改已生效:我将 error_log= 设置为一个文件,并且能够使用对 error_log($string, 0); 的调用对其进行写入
我还没有尝试运行会尝试使用 php 说已加载的任何扩展的代码,所以我想这是我的下一步行动,但我只是想看看是否有其他人解决了这个问题并且如果有怎么办。
【问题讨论】:
-
这些扩展不需要作为单独的文件驻留在您的硬盘上。它们也可以静态链接到 PHP 二进制文件中。