在Mac OS X上构buildPHP?

在Mac OS X上构buildPHP 5.3.0时,如何确定使用哪个./configure选项? 有10万个选项,我不知道要使用哪一个。

我想要的是确保我有PDO和PDO + MySQL启用。


[[[scream!]]]]我运行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命令行中指定选项来启用所需的选项。 出现在我的5.1.6 configure命令中的MySQL选项如下:

 $ ./configure --help |  grep mysql
   --with-mysql [= DIR]包含MySQL支持。  DIR是MySQL的基本目录
   --with-mysql-sock [= DIR] MySQL:MySQL unix套接字指针的位置。
   --with-mysqli [= FILE]包含MySQLi支持。  FILE是可选的path名 
                          到mysql_config
   --enable-embedded-mysqli MYSQLi:启用embedded式支持
   --with-pdo-mysql [= DIR] PDO:MySQL支持。  DIR是MySQL的基本目录

至less,我将指定一个安装前缀以及Apache安装(您应该已经构build)的types(v1或v2):

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

确保mysql_config(假设有这样的事情)在你的path中,或者告诉configurationmysql库的位置。

在OSX上构buildPHP 5.3.0时,如何确定使用哪个./configure选项?

如果您需要知道如何configuration某些东西,那么您需要一些真正的通用build议来构build软件包。

  • 阅读“精细手册”,通常文档将给出例子,告诉你你需要什么,什么选项做什么。 阅读名为INSTALL的文件,检查网站。 对于像PHP这样受欢迎的包,信息应该很容易find 。
  • PHP 5.3.0是一个相当新的软件包,但是有更旧的软件包可用。 去找别人build立的软件包,并复制他们使用的configuration行。

对于PHP 5.3,集成MySQL访问库非常简单。 这只是在configuration标志中启用MySQL Native Driver(或mysqlnd )的问题:

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

请看buildphp ,这是一个基于Rake的PHP构build系统,专门用于编译PHP 5.3(以及用于PHP扩展的最新库集合)。

http://github.com/patcoll/buildphp