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

Собираете PHP на Mac OS X?

Как мне определить, какие параметры ./configure использовать при сборке PHP 5.3.0 в Mac OS X? Есть 10 миллионов вариантов, и я не знаю, какие из них использовать.

Все, что я хочу, - это убедиться, что у меня включены PDO и PDO + MySQL.


[[[[крик!]]]] Я сбежал sudo port install php5-mysql и это "сработало", но когда я запускаю php:

$ php
PHP Warning:  Cannot load module 'mysql' because required module 'mysqlnd' is not loaded in Unknown on line 0

Warning: Cannot load module 'mysql' because required module 'mysqlnd' is not loaded in Unknown on line 0
dyld: lazy symbol binding failed: Symbol not found: __mysqlnd_palloc_rinit
  Referenced from: /opt/local/lib/php/extensions/no-debug-non-zts-20090626/mysqli.so
  Expected in: dynamic lookup

dyld: Symbol not found: __mysqlnd_palloc_rinit
  Referenced from: /opt/local/lib/php/extensions/no-debug-non-zts-20090626/mysqli.so
  Expected in: dynamic lookup

Trace/BPT trap

Ага! Сопровождающий macports найден та же проблема. я сделал sudo port selfupdate и перезапустите установку php5, и все заработало.

Использовать MacPorts поскольку они собрали вместе большинство настроек таким образом, чтобы их было легче понять. Например:

port install php5-mysql

Как мне определить, какие параметры ./configure использовать при сборке PHP 5.3.0 на OSX?

Если вам нужен действительно общий совет по созданию пакетов, когда вам нужно знать, как что-то настроить.

  • Прочтите Fine Manual, обычно в документации приводятся примеры, рассказывающие, что вам нужно, и какой вариант с чем работает. Прочтите файл с именем INSTALL, посетите веб-сайт. Для такого популярного пакета, как PHP, информация должна быть довольно простой найти.
  • PHP 5.3.0 - довольно новый пакет, но доступны более старые пакеты. Найдите пакет, созданный кем-то другим, и скопируйте строку конфигурации, которую они использовали.

Включите нужные параметры, указав их в командной строке configure. Параметры MySQL, которые появляются в моей команде конфигурации 5.1.6, следующие:

$ ./configure --help | grep mysql
  --with-mysql[=DIR]      Include MySQL support. DIR is the MySQL base directory
  --with-mysql-sock[=DIR]   MySQL: Location of the MySQL unix socket pointer.
  --with-mysqli[=FILE]    Include MySQLi support. FILE is the optional pathname 
                          to mysql_config
  --enable-embedded-mysqli  MYSQLi: Enable embedded support
  --with-pdo-mysql[=DIR]    PDO: MySQL support. DIR is the MySQL base directory

Как минимум, я бы указал префикс установки вместе с типом (v1 или v2) установки Apache (который вы уже должны были создать), который у вас есть:

$ ./configure --prefix=/opt/apache --with-apxs2=/opt/apache/bin/apxs \
--with-mysql --with-pdo-mysql

Убедитесь, что mysql_config (при условии, что он есть) находится на вашем пути, или сообщите configure, где расположены библиотеки mysql.

В PHP 5.3 интегрировать библиотеки доступа MySQL очень просто. Просто нужно включить собственный драйвер MySQL (или mysqlnd) во флагах конфигурации:

./configure --enable-pdo --with-mysql=shared,mysqlnd --with-pdo-mysql=shared,mysqlnd --with-mysqli=shared,mysqlnd

Для чего это стоит, взгляните на buildphp, который представляет собой систему сборки на основе Rake для PHP, которая была создана специально для упрощения компиляции PHP 5.3 (и современного набора библиотек для расширений PHP).

http://github.com/patcoll/buildphp