2011-03-07 76 views
2

指定外部MySQL驱动我有运行的apache + mod_python的与MySQL簇(NDB)作为数据库服务器的群集。 python中的代码使用MySQLdb。为PHP 5.3

今天,我被添加新程序包在需要PHP的门户网站。所以不知道PHP 5.3现在附带的所谓的mysqlnd内部驱动程序,我在同一台服务器上启用了mod_php。

这突然产生了彻底决裂的蟒蛇代码下来!挖掘了一下之后,我注意到MySQLdb库正在使整数和其他类型变成字符串(python代码并不期待)。

从阿帕奇禁用mod_php,并且固定它。

我的结论是,不知何故将覆盖处理在Apache环境中的NDB的东西,弄乱了回报,一切都在本地MySQL驱动程序。

现在,我的问题是,我该怎么办?有没有办法告诉PHP使用安装在系统中的mysql驱动程序并禁用它的内部mysql驱动程序?

+0

PHP不会用mysqlnd ' – mfonda 2011-03-07 23:39:44

+0

我认为这在ServerFault上更有意义。 – 2011-03-07 23:43:01

+0

它是标准的RedHat RPM。我想我需要从头开始编译。 – 2011-03-08 03:19:32

回答

0

你最好的选择可能是使用FastCGI和新FPM SAPI,而不是mod_php的。这将PHP本身从Apache分离出来,这将防止您遇到的库混淆。

(这也是值得注意的是,如果你的Python程序中使用WSGI,那么你也可以使用one of the WSGI-FastCGI adapters而不是mod_python的。)

除非你用`--with-mysql的= mysqlnd编译
+0

我无法在同一台服务器上使用2个不同的Web服务器。想到的第一个原因是他们将无法共享端口80和443.此外,这些都是具有大量自定义代码的生产环境。将Web服务器从Apache移动到其他地方需要花费大量的时间和精力来测试和调整代码(例如,代码严重依赖于mod_python线程之间的共享对象以提高性能) – 2011-03-08 07:14:42

+0

[FastCGI不是Web服务器](http ://www.fastcgi.com/drupal/),它是Web服务器和应用程序之间的接口。您仍然在使用Apache,只是与另一组代码结合使用。如果底层的PHP(或Python)编写正确,它永远不会注意到这种差异。 – Charles 2011-03-08 07:16:55

+0

我现在看到了逻辑。谢谢。我会试一试。 – 2011-03-08 07:33:08