在托管网站中安装mysqlnd

时间:2012-12-05 16:55:40

标签: php mysqli mysqlnd

我正在用PHP开发一个网站--MySQL。以下是一些需要注意的要点:

  • 我使用 MySQLi API进行数据库访问。
  • 在我本地安装的XAMPP(Windows 7机器)中,PHP版本 5.3.8 ,MySQL版本 mysqlnd 5.0.8-dev - 20102224 < / LI>
  • 我在免费托管服务器上托管了网站,用于测试“cuccfree.com”。 PHP版本 5.3.14 ,MySQL版本 5.1.66 。与许多其他托管公司相比,它仍然对MySQLi提供了更好的支持。
  • 在两者的phpinfo上,本地机器显示 mysqlnd 驱动程序,但托管服务器没有。
  • 我为MySQLi创建了一个包装器类,它使用函数 mysqli_stmt :: get_result()获取ResultSet。此功能适用于我的本地计算机,但不适用于cuccfree.com托管服务器,因为 mysqli 对象没有名为 get_result()的方法。但是, mysqli_stmt 对象已成功准备 bind_param'ed
  • php.net mysqli_stmt 的手册页说明使用 mysqli_stmt :: get_result(),我们需要 mysqlnd 安装驱动程序。
  • 服务器的配置提供 mysqli_stmt :: bind_object()的使用。但get_result()对我来说似乎是一个更好的选择,因为我们可以得到一个数组的形式。我已使用以下行重写函数以接受可变数量的参数:

    call_user_func_array(array($ stmt,'bind_param'),$ params);

其中$ params是一个参数数组。

  • 使用bind_object(),我必须绑定返回给变量的每一列。在这种情况下,我无法创建一个包装类函数来处理单点的所有SQL查询。

我寻找了几家托管公司,通过谈话和邮寄给许多公司的客户支持,包括GoDaddy和Manas Hosting,他们不提供 mysqlnd 的使用。从逻辑上讲,他们坚持使用VPS或专用服务器。显然,即使在入门级别,建议的选项都非常昂贵。

所以,最后我的问题是,我们可以将mysqlnd安装/嵌入Linux服务器上的网站吗?如果没有,我有什么办法可以阻止我更改整个网站的代码,这将花费我很多天?

此致

2 个答案:

答案 0 :(得分:2)

我之前也经历过这种情况,这是一个真正的食客。如果您不想升级到VPS,唯一的解决方案是使用PDO。您可以尝试在共享主机帐户中使用SSH,但是由于网络管理员在网络托管方面非常聪明,因此尝试更改任何内容都是好运。我甚至已经从yum.conf移除了/etc/,并拒绝了对您无法通过yum安装任何软件包的权限。但是,如果您获得了VPS并且有cpanel,则可以更改PHP的配置选项。我花了很长时间来解决这个问题,但我了解到你可以通过运行/usr/local/cpanel/scripts/easyapache来改变CPanel中的PHP选项。如果运行Apache 2.2,则还可以按照此文档更改PHP配置选项的配置选项。没有VPS,就没有办法改变CPanel,我很确定。我希望这篇文章有所帮助。

答案 1 :(得分:1)

除非您的托管公司已启用dl(),我几乎可以保证他们没有使用,否则没有。

你已经指出过的第二个选择是编写(或者发现,它们可能存在,也许其他人可以指向你那个方向)是mysqlnd的兼容层。我假设自从你自己编写以来没有一个已经存在。所以不幸的是,我相信你陷入困境。

无论如何,下次你应该真的使用PDO :)但我知道,后见之明是20/20,所以......