我运行以下语句(因此它是完全可重现的)(因为我想使用 WordPress 的源代码)并且以下使您当前的目录成为在 8082(pwd)下运行的网站。
mkdir wordpress
cd wordpress
git clone https://github.com/WordPress/WordPress.git .
docker run -p 127.0.0.1:3306:3306 –name some-mariadb -e MARIADB_ROOT_PASSWORD=PASSWORD -d mariadb:latest
docker run -d -p 8082:80 –mount type=bind,source=”$(pwd)”,target=/var/www/html php:apache
- 在 /usr/local/etc/php/php.ini extension=mysqli 中未注释(并且未注释其他)(所以我编辑了这个文件)
- 我可以连接到 MariaDb 并制作数据库和东西
我制作了一个新文件:info.php:
if ( function_exists( 'mysqli_connect' ) )
{
echo "exists";
}
else
{
echo "does not exist";
}
phpinfo();
问题:浏览器中的输出显示“不存在”。
(phpinfo() phpinfo 显示 lib mysqlnd 8.0.11)
这意味着 WordPress 给出了相同的错误,因为这是 WordPress 使用的代码。
那么为什么...在 phpinfo 提供详细信息时找不到功能/扩展名。
我做错了很可能。
参考:
- https://hub.docker.com/_/mariadb官方图片
- https://hub.docker.com/_/php官方图片
- https://github.com/WordPress/WordPress.git官方镜像仓库
更新 我注意到“--with-mysqli=mysqlnd”不在上面的 phpinfo 屏幕中。所以我解压了 tar 文件(当然在 docker 镜像中)并
- 运行 phpinfo 给出的相同配置命令,附加“--with-mysqli=mysqlnd”(但必须在各种 apt-get xxx-dev 库之间安装,包括 apache 开发库、libxml-dev、sqlite3-dev、libssl-开发,zlib1g-dev,libcurl4-openssl-dev,libonig-dev,libreadline-dev,libsodium-dev,libargon2-dev)
- 跑了
- 运行 make install
- 重新开始
这解决了问题。
在这个 docker image php 编译中,缺少一个包。
这将得到解决。
或者...在 docker hub 上搜索具有此功能的图像。