在MAC OSX上构建和使用mssql.so php扩展,AMPPS服务器的问题

时间:2014-10-26 23:08:25

标签: php sql-server macos apache autoconf

我认为我需要知道的是在OSX上构建.php扩展时如何指定构建体系结构。 我应该首先尝试哪些可能的架构,以及如何指定它们?

细节:

我无法为我的服务器构建一个有效的mssql.so php扩展程序。

我一直在mac上使用AMPPS服务器来提供基于php的网站,访问MySQL数据库。

现在我需要连接到MSSQL数据库。 AMPPS php安装不包含mssql扩展,所以当我尝试使用mssql_connect()时,我收到以下错误。

Call to undefined function `mssql_connect()` in /Applications/AMPPS/www/test.php

我想我需要将mssql.so添加到php / lib / extensions / ext文件夹然后添加

extension=mssql.so  

到我的php.ini文件。

要构建mssql.so我发现了几个使用Freetds的在线教程:

http://lkrms.org/php-with-freetds-on-os-x-mavericks/#comment-82521

http://blog.benjaminwalters.net/?p=10

我用家酿来安装autoconf:

brew instal autoconf

然后我下载并安装了freetds:

./configure --prefix=/usr/local/freetds --sysconfdir=/usr/local/freetds/conf/freetds --disable-libiconv --disable-odbc  

make

sudo make install

Freetds安装在/ usr / local / freetds。然后我下载了php。我已尝试使用所有可供下载的版本5.6.2,5.5.18,5.4.32和5.3.29。 5.3.29有问题,我无法生成mssql.so。

所有其他版本使用以下方法成功生成了mssql.so:

在下载文件夹中解压缩包

cd php-5.4.17/ext/mssql

phpize

./configure --with-php-config=/usr/bin/php-config --with-mssql=/usr/local/freetds

make

然后我将生成的mssql.so复制到/Applications/AMPPS/php-5.4/lib/extensions/ext并将其添加到php.ini文件中。

extension=mssql.so 

我重新启动apache服务器并查看错误/日志文件,其中包含以下错误:

PHP Warning:  PHP Startup: Unable to load dynamic library '/Applications/AMPPS/php-5.4/lib/extensions/ext/mssql.so' - dlopen(/Applications/AMPPS/php-5.4/lib/extensions/ext/mssql.so, 9): no suitable image found.  Did find:\n\t/Applications/AMPPS/php-5.4/lib/extensions/ext/mssql.so: mach-o, but wrong architecture in Unknown on line 0

所以好像我为错误的架构构建了mssql.so?

当我为mssql.so配置“make”时,我查看了终端输出,并发现以下内容指示了它的架构:

checking build system type... i386-apple-darwin13.1.0
checking host system type... i386-apple-darwin13.1.0
checking target system type... i386-apple-darwin13.1.0

所以看起来我是为i386制作的。这是我开始感到困惑的地方。

让终端指示我运行“make test”后,我这样做并收到以下输出:

   ===================================================================== 
    PHP         : /usr/bin/php  PHP_SAPI    : cli PHP_VERSION : 5.4.24

    ZEND_VERSION: 2.4.0 PHP_OS      : Darwin - Darwin myMac13.1.0 Darwin

    Kernel Version 13.1.0: 

    Thu Jan 16 19:40:37 PST 2014;

    root:xnu-2422.90.20~2/RELEASE_X86_64 x86_64 

    INI actual  : /Users/user/downloads/php-5.6.2/ext/mssql/tmp-php.ini More .INIs  : 

    CWD         : /Users/user/Downloads/php-5.6.2/ext/mssql Extra dirs :

     VALGRIND:Notused

     ===================================================================TIME START 2014-10-26 11:53:50

     =====================================================================

没有进行任何测试。它没有说明为什么没有进行任何令人沮丧的测试。它提到的x86_64不是i386。

我试图检查我的系统要验证的架构是否应该是i386或x86_64。

我使用uname和arch执行此操作,如下所示:

uname -p 

i368

uname -m

x86_64

arch

i386

所以我的机器硬件是x86_64(uname -m),但处理器架构是i386(uname -p)我不明白这些可能有什么不同或者它的含义是什么。

那么我为错误的架构构建了mssql.so还是我做错了什么呢?如果我为错误的架构构建了它,那么如何配置它以构建正确的架构呢?

非常感谢您对此的任何帮助。

0 个答案:

没有答案