Назад | Перейти на главную страницу

заставить PHP PDO работать в Mac OS X

Я использую OS X 10.5; похоже, что он пришел с установленными Apache и PHP (за исключением некоторых незначительных настроек, которые я включил за эту страницу; Раньше я использовал Apache, поэтому я знаю основы работы httpd.conf).

У меня есть уже существующий скрипт, который использует PDO. У меня есть база данных MySQL, и я могу легко настроить свой сценарий для доступа к базе данных через PDO MySQL или PDO ODBC. Проблема в том, что, хотя я включил расширения PDO MySQL и PDO ODBC в php.ini, phpinfo () сообщает, что единственными драйверами PDO являются sqlite2 и sqlite. Я предполагаю, что соответствующего расширения .dll или .so файлов нет? Как мне их получить?

примечание: я использую встроенную установку для PHP. (видеть страница Apple о включении php, в котором ничего не говорится о настройке или добавлении дополнительных файлов .so)

Установка PHP по умолчанию не очень полезна. Самый простой способ получить более полнофункциональные версии стандартных пакетов unix для OSX - использовать MacPorts или Fink. Лично я предпочитаю MacPorts, хотя думаю, что большинство людей предпочитают Fink.

Вам нужно запустить configure с аргументом:

--with-pdo-mysql=/sw

/sw если вы используете Fink. Если вы этого не сделаете, измените это на путь, где ваш include/mysql.h и lib/libmysqlclient.la являются (locate mysql.h поможет).

Если вы просто хотите добавить расширение PDO к существующей установке, загрузите исходный код PHP, перейдите в ext/pdo каталог, запустите:

phpize && ./configure && make && sudo make install

Это создаст и установит соответствующие .so файл для вас. Скрипт скажет вам, куда он его положил. Иногда каталог ошибается, поэтому убедитесь, что он соответствует extension_dir в твоем php.ini.

Если pdo_sqlite расширение уже работает, вам не нужно переустанавливать pdo само расширение - просто pdo_mysql расширение.

Загрузите исходный код той же версии PHP, что и встроенная, и:

cd ext/pdo_mysql
phpize
./configure --with-pdo-mysql=shared
make
sudo make install

Должно быть так просто.