【问题标题】:Installing PHP 7.0.0RC2 with mysqli on Raspberry Pi B在 Raspberry Pi B 上使用 mysqli 安装 PHP 7.0.0RC2
【发布时间】:2015-12-16 13:47:41
【问题描述】:

上周我在我的 Raspberry Pi B 上安装了 PHP 7.0.0RC2。 我可以查看 PHP 页面,但是问题是我无法使用 mysqli 连接到数据库(我知道 PHP v7 不再支持 mysql)。

我用--with-mysqli=shared 运行了./configure 命令。 但是,当我使用php -m 命令检查安装了哪些模块时,我没有看到 mysqli。

我尝试将extension=mysqli.so 添加到 php.ini 文件中。 它首先抱怨找不到mysqli.so文件,所以我尝试将我的php5版本的mysqli.so复制到extensions文件夹中。 但是,这并没有解决问题并导致以下错误消息:

PHP 警告:PHP 启动:无法加载动态库 '/usr/local/lib/php/extensions/no-debug-non-zts-20141001/mysqli.so' - /usr/local/lib/php/ extensions/no-debug-non-zts-20141001/mysqli.so: undefined symbol: zval_used_for_init in Unknown on line 0

有人对如何让 mysqli 与我在 Raspberry Pi 上安装的 PHP7 一起工作有任何建议吗?

【问题讨论】:

  • 你使用的是什么操作系统?
  • 你有没有按照教程安装PHP7?
  • @Machavity 我正在运行 Raspbian 7.8 作为操作系统。
  • @blarg 我没有遵循任何特定的 PHP 7 教程,但我在 Google 上搜索了如何从源代码安装旧版本的 PHP (v5)。

标签: mysqli raspberry-pi php-7


【解决方案1】:

您可以在configure 输出中找到详细信息,但很难捕捉到,如果不是致命错误,当您make 时不会停止构建。

MySQLi 的推荐(阅读:只有不错的)驱动程序是 MySQL Native Driver (mysqlnd)。

如果您希望 MySQLi 构建为共享,您还必须构建 mysqlnd shared,以及依赖它的所有内容(例如 PDO MySQL)。

使用配置选项仅构建本地驱动程序静态会更简单:

--with-mysqli=mysqlnd

这将启用 mysqlnd 和 mysqli 的静态构建。

如果出于某种原因您确实想要构建共享,那么您将需要非常相似的配置选项,如果不是完全相同的话:

--enable-mysqlnd=shared
--with-mysqli=shared,mysqlnd

这将导致 mysqlnd 和 mysqli 的共享构建,要求您在适当的位置以适当的顺序添加 extension=mysqlnd.soextension=mysqli.so(后者取决于前者)。

在重新配置构建之前记得make distclean,如果你不这样做会发生令人惊讶的事情;)

【讨论】:

  • 我尝试使用选项 --with-mysqli=mysqlnd 进行构建,并在重新配置构建之前进行了 make distclean,但是我收到了与以前相同的错误消息
  • 有时make distclean 无效,试试vcsclean,验证它不再被构建共享。
猜你喜欢
  • 2018-09-13
  • 2017-01-15
  • 2018-12-28
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-07
相关资源
最近更新 更多