我正在尝试将我的网站停靠。我已经启动并运行了Nginx和PHP,除了我无法连接到数据库之外它正在查找。当页面加载时,我收到错误:
Fatal error: Uncaught Error: Class 'MySQLi' not found in /private/conn.php:8 Stack trace: #0 /public_html/index.php(2): require() #1 {main} thrown in /private/conn.php on line 8
第8行的连接线是:
$db = new mysqli("$host", "$user", "$pass", "$db", "$port");
现在这个曾经在我的旧设置上工作正常但是由于转移到新的并安装php7.1.5我无法运行它。现在,我还没有使用过mysql,所以这可能是我的误解,但是mysqlnd包含了mysqli驱动程序。
我该如何运行?或者我现在应该使用不同的驱动程序吗?
答案 0 :(得分:10)
您需要在Dockerfile中启用php扩展:
FROM php:7
RUN docker-php-ext-install mysqli
无需触碰php.ini
。
答案 1 :(得分:2)
为我工作:
内部php容器:
with open(refname) as file:
for line in file:
line = line.split('#', 1)[0]+"\n"
line = re.sub(r'\n+', '\n',line)
if line.strip():
list.append(line)
答案 2 :(得分:1)
我也有类似的问题
php:7-apache 映像,默认情况下不会安装mysqli
您可以在容器内进行验证
$ docker exec -it <phpcontainerid> bash
在docker容器bash终端内部
# docker-php-ext-enable mysqli
如果未安装mysqli,您将从上述命令的输出中了解
# docker-php-ext-install mysqli
然后我提交了此更改,以使图像相同
$ docker commit -p <phpcontainerid> <new or same image name>
答案 3 :(得分:0)
看起来你的php.ini中没有启用MysqlI扩展。
如果启用,您应该在phpinfo中看到mysqli
部分。
有关启用扩展程序的更多信息,请访问:Fatal error: Class 'MySQLi' not found
答案 4 :(得分:0)