明白了。
我已经发布了我为使其正常工作而采取的以下步骤。它看起来很长,但还不错。
这三个网站有助于解决问题。
For building the correct library
For malloc error when using make
For function_entry error when using make
下载:
lp_solve_5.5.2.0_source.tar,
lp_solve_5.5.2.0_PHP_source.tar
来自http://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.0/
这些是我为使其工作而采取的步骤。首先确保您的扩展目录是正确的。我在php.ini 文件中将我的设置恢复为默认值(基本上将其注释为/opt/local/lib/php54/extensions/no-debug-non-zts-20100525)。我还添加了extension=phplpsolve55.so 行。使用$ port unload apache2 和$ port load apache2 重新启动网络服务器。
此时,如果您在终端中运行 $ php,它应该会抱怨找不到 phplpsolve55.so 驱动程序。
下载 lp_solve_5.5_source.tar.gz 并将其展开为
名为lp_solve_5.5 的目录。
下载并展开lp_solve_5.5.2.0_PHP_source.tar 为
目录名为lp_solve_5.5_PHP。
1) 在源目录中构建 lp_solve 库。
$ cd lp_solve_5.5/lpsolve55
$ sh ccc.osx
这会在 lpsolve55 子目录中创建两个新文件:
$ ls liblp*
liblpsolve55.a liblpsolve55.dylib
对我来说,这两个文件位于lpsolve55\bin\osx64
2) 安装 lp_solve 库。
如果不在目录lpsolve55 中,则 cd 到它。将liblpsolve55.a和liblpsolve55.dylib复制到/usr/local/lib(可能需要先创建/usr/local/lib:$ sudo mkdir -p /usr/local/lib):
$ sudo cp liblpsolve55.a liblpsolve55.dylib /usr/local/lib
3) 测试构建和安装。
$ cd lp_solve_5.5/demo
ccc.osx 脚本已损坏。好消息是 5.5 版
lp_solve 修复了 Mac 上的“malloc.h”不兼容问题
早期版本。 Unix/Linux 脚本现在可以在 OS X 上运行。
病人...
构建“演示”可能需要几秒钟:
$ sh ccc
演示中的示例问题应该没有错误并且有
“出色的数值精度 ||*|| = 0”:
$ ./demo
3) 构建 php lpsolve 库
现在进入 PHP 目录 (lp_solve_5.5_PHP)
$ cd lp_solve_5.5_PHP/extra/PHP
$ phpize
$ ./configure --enable-maintainer-zts --with-phplpsolve55=PATH TO SOURCE DIRECTORY
*哪里 PATH TO SOURCE DIRECTORY 是您放置 lp_solve_5.5* 的位置
然后打开应该在当前 (lp_solve_5.5_PHP/extra/PHP) 目录中的PHPmod.c 并将function_entry 更改为zend_function_entry
然后打开hash.c,它也应该在同一目录中,并更改显示的行
#include <malloc.h>
到
#if !defined(__APPLE__)
#include <malloc.h>
#endif
** 请注意,我只知道这样做是因为我在执行此操作之前在我的机器上运行了 $ make,它抱怨这两个文件*
然后做
$ make
$ cd modules
$ sudo cp phplpsolve55.so /opt/local/lib/php54/extensions/no-debug-non-zts-20100525/
现在运行 $ php 应该不会返回任何错误。
再次重新启动 apache 服务器,扩展程序应该可以工作了。如果没有,我会尽我所能提供帮助。
希望这对将来的某人有所帮助。
编辑
刚刚更新到 Mavericks,一切仍然完美无缺。我所做的是按照here 概述的步骤,在完成升级后运行$ xcode-select --install。然后我做了$ sudo port selfupdate,最后运行页面底部的脚本来重新加载我所有的端口:
curl -O https://svn.macports.org/repository/macports/contrib/restore_ports/restore_ports.tcl
chmod +x restore_ports.tcl
sudo ./restore_ports.tcl myports.txt
完成后,我执行了$ sudo port load apache2,一切仍然正常。