10

如何让 PDO 在我的 mac (os x 10.5) 上工作?我在 Zend/Eclipse 中使用内置的 php 和 php。似乎根本找不到有用的驱动程序。

4

5 回答 5

32

我最近不得不在 Leopard 上安装 PDO_PGSQL 驱动程序,并且遇到了许多问题。在寻找答案的过程中,我偶然发现了这个问题。现在我已经成功安装了它,所以,即使这个问题已经很老了,我希望我的发现可以帮助其他人(比如我自己),他们无疑会遇到类似的问题。

您需要做的第一件事是安装 PEAR(如果您还没有安装的话),因为默认情况下它不会安装在 Leopard 上。

完成后,使用 PECL 安装程序下载 PDO_PGSQL 包:

$ pecl download pdo_pgsql
$ tar xzf PDO_PGSQL-1.0.2.tgz

(注意:您可能必须以pecl超级用户身份运行,即sudo pecl。)

之后,由于 PECL 安装程序无法直接安装扩展,您需要自己构建和安装:

$ cd PDO_PGSQL-1.0.2
$ phpize
$ ./configure --with-pdo-pgsql=/path/to/your/PostgreSQL/installation
$ make && sudo make install

如果一切顺利,你应该有一个名为“ pdo_pgsql.so”的文件位于一个看起来像“ /usr/lib/php/extensions/no-debug-non-zts-20060613/”的目录中(PECL 安装应该输出了它安装扩展的目录)。

要完成安装,您需要编辑php.ini文件。找到标有“动态扩展”的部分,然后在(可能已注释掉的)扩展列表下方,添加以下行:

extension=pdo_pgsql.so

现在,假设这是您第一次安装 PHP 扩展,您需要采取两个额外的步骤才能使其正常工作。首先,在 中php.ini,找到extension_dir指令(在“路径和目录”下),并将其更改pdo_pgsql.so为安装文件的目录。例如,我的extension_dir指令如下所示:

extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613"

第二步,如果您使用的是 64 位 Intel Mac,则需要让 Apache 在 32 位模式下运行。(如果有更好的策略,我想知道,但目前,这是我能找到的最好的。)为了做到这一点,编辑位于/System/Library/LaunchDaemons/org.apache.httpd.plist. 找到这两行:

<key>ProgramArguments</key>
<array>

在它们下面,添加以下三行:

<string>arch</string>
<string>-arch</string>
<string>i386</string>

现在,只需重新启动 Apache,PDO_PGSQL 就会启动并运行。

于 2009-08-17T04:28:56.280 回答
2

看看这个 PECL 包:PDO_PGSQL

我自己没有尝试过,但我一直对使用 Postgres 作为 MySQL 的替代品感兴趣。如果我有机会很快尝试一下,我会把我的结果放在这里以防万一。

于 2008-09-15T02:25:05.470 回答
1

我不确定这对 PDO 驱动程序是否有帮助,但您可能会查看BitNami 的 MAPPStack

我在 Mac 上使用 Postgres、PHP 和 Apache 时遇到了很多麻烦,其中一些与其中一些或全部的 64 位和 32 位版本有关。到目前为止,BitNami MAPPStack 安装总体上运行良好。也许它也会帮助您解决 PDO 问题。

于 2008-09-15T02:10:48.547 回答
1

通过 brew 安装新的 php 版本并重新启动服务器,以及 php -v,所有问题都被删除。

于 2017-04-30T06:38:52.873 回答
0

这对我有用

brew install php55-pdo-pgsql

这将安装 PHP 5.5.32 和 PostgreSQL 9.5。我已经安装了 PostgreSQL 9.4,所以我卸载了自制版本:

brew uninstall postgres

然后您必须更新 /etc/apache2/httpd.conf 以指向正确的 PHP 版本并重新启动 Apache:

LoadModule php5_module /usr/local/Cellar/php55/5.5.32/libexec/apache2/libphp5.so

我的 OSX 版本是 Yosemite。

于 2016-03-08T17:47:54.193 回答