我找遍了所有地方,却什么也没找到。也许我不知道该找什么。
环境是 Ubuntu Lucid (10.4),带有 PHP 5.2.4 和 PostgreSQL 9.2。
PHP 的版本号为 5.2.4 dpkg --set-selections
。我只能找到 php5-pgsql 的 5.2.6 版本,当我尝试使用 dpkg 安装时,它提示 PHP 的版本号为 5.2.4。
试运行后aptitude install php5-pgsql
告诉我需要升级到 PHP 5.3。
编辑:升级 PHP 目前不是一个选项。
我应该补充一下:我尝试使用 从源代码构建 PHP 5.2.4 --with-pgsql --with-pdo-pgsql
。结果没有得到任何扩展。libpq 和 libpq-dev 都已安装。
答案1
这似乎可以解决问题:
- 下载并解压 PHP 源。
- 确保
libpq5
和libpq-dev
已安装。 cd php_x.x.x/ext/pgsql
phpize
./configure
make
sudo make install
- 编辑
php.ini
以添加extension=pgsql.so
任何必要的其他 pgsql 指令。 - 重新启动 apache。
答案2
首先,如果你谈论的是生产系统,而您不是系统管理员(你的评论表明你不是),不要触碰系统。
如果你选择忽略这个建议,并无意中破坏了系统管理员回来后可能会对你造成严重的身体伤害(并且将这样做完全有道理——没有什么比度假回来后发现有人试图“帮忙”把东西弄坏了更糟糕的了,除非是在度假时接到紧急电话)。
尽管如此,如果你想手动执行此操作,你必须准确确定软件包正在安装的内容php5-pgsql
(除了使用 Postgres 支持编译的 PHP 之外,它还包括pgsql PDO 扩展,可能还有其他东西)。然后您需要手动安装所有的部分。
没有人能保证你一定能拼出这个拼图:例如,PECL(你可以从中获得 PDO 扩展)仅在受支持的 PHP 版本上进行了测试。它将大概工作,但如果不行,解决方案是“将 PHP 升级到受支持的版本”。
呼应其他人在评论中所说的话:
将系统锁定到特定版本的 PHP 是不好的。
如果您的系统需要 PHP 5.2(长期以来不受支持,并且充斥着已知的安全漏洞),那么是时候与您的系统管理员坐下来并向您的上级管理层写一份备忘录了。(如果您的系统管理员不明白为什么这是个问题你写一份备忘录并抄送给他。)
将你的系统锁定到特定的 PHP 补丁级别疯狂的.
如果你的系统绝对需要PHP 5.2.4 你应该已经写了一份备忘录,并当面向所有人大声疾呼,告诉他们
这是不可持续的,将来会造成重大问题。如果你写了那份备忘录,你就可以显得很有先见之明,说“还记得那份备忘录吗?”——否则你现在就可以写(虽然看起来不太好,但至少表明你在做你的工作,并指出了对业务的严重风险)。