PHP на Mac OS X - загрузка несуществующих расширений по умолчанию - ошибочные результаты phpinfo ()? - PullRequest
1 голос
/ 27 сентября 2010

Я включил PHP 5.3.2 и Apache 2.2.14 в моей установке Mac OS X Snow Leopard и подтвердил, что я подключаюсь к нему с помощью вызова 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, я закомментировал все доступные расширения, чтобы предотвратить загрузку (сейчас я просто пытался получить базовый уровень).Даже после перезапуска Apache с новой информацией php.ini все расширения все еще загружаются.Я предполагаю, что, поскольку никакие расширения не загружаются явно, PHP реагирует так же, как если бы у меня не было php.ini.

Меня удивляет то, что когда я пытаюсь найти библиотечные файлы, связанные с«загруженные» расширения, я могу найти NONE!Я искал весь мой жесткий диск как пользователь root, ища какие-либо следы файлов библиотеки * .so и не нашел ни одного (например: call to find / -name ' mysql ' не возвращает файлов с расширением phpбиблиотеки).И есть только один файл * .so в каталоге / usr / lib / php / extensions / no-debug-non-zts-20090626, указанный как extension_dir для php.Почему php говорит, что это успешно загружает их тогда?

Вот пример расширения gd из phpinfo () в качестве примера: http://www.concentricsoft.com/downloads/phpinfo_sc1.jpg

Я подтвердил, что изменения, которые я внес вФайл php.ini вступил в силу: я установил error_log = в файл и могу записать в него, используя вызов error_log ($ string, 0);

Я еще не пытался запустить код, который быпопытаться использовать любое из расширений, которые, по словам php, загружены, так что я думаю, что это мой следующий шаг, но я просто хотел посмотреть, решил ли кто-нибудь еще эту проблему и если да, то как.

1 Ответ

1 голос
/ 27 сентября 2010

Многие расширения PHP могут быть построены статически, как часть исполняемого файла php, а не как общие объектные файлы.

Вы можете даже строить расширения PECL статически .

...