php - 带有 PHP 和 MySql 的 Docker - $servername 错误

标签 php mysql docker

<分区>

我有一个用 PHP 和 MySql 开发的项目。

当我使用到数据库的连接时,我将连接设置如下:

 // Define $username and $password
$username=$_POST['username'];
$password=$_POST['password'];


/* -------------------------------- CONNESSIONE -------------------------------------- */
$servername = "localhosto";
$username_db = "xxxxxx";
$password_db = "yyyyyy";
$db = "zzzzzz";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$db", $username_db, $password_db);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    //echo "Connected successfully<br/><br/>";
}
catch(PDOException $e)
{
    echo "Connection failed: " . $e->getMessage()."<br/><br/>";
}

项目运行正常,连接MySql没有问题。

下一步我创建了一个带有以下 docker 文件的 Docker 镜像:

FROM php:7.0-apache


RUN apt-get update \
  && apt-get install -y --no-install-recommends libpq-dev \
  && docker-php-ext-install mysqli pdo_pgsql pdo_mysql


COPY / /var/www/html
EXPOSE 80

我已经创建了图像和容器:

docker build -t mysoftware C:\Users\mysoftware
docker run -d -p 5000:80 mysoftware

但是 Php 应用程序没有连接到 MySql。

我需要更改与服务器名称的连接:

$servername = "SERVER_NAME";

如果应用程序在没有容器的情况下正确运行,为什么我会出错??

最佳答案

在容器内运行时,localhost 不会解析为主机,而是引用容器 IP 地址。

您需要从容器内连接到主机。对于该支票:From inside of a Docker container, how do I connect to the localhost of the machine?

关于php - 带有 PHP 和 MySql 的 Docker - $servername 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46978590/

相关文章:

php - mysql选择日期之间

php - .ENV 文件可见

php - mysqli中的mysql_result替换

Mysql select查询省略特定字段

sql-server - 带有docker的Mac OS X上的MS SQL Server

python - Docker 上的 Redis : Error 111 connecting to 0. 0.0.0 :6379. 连接被拒绝

php - 带过滤器的排名系统

php - 如果 php 5.3.10 中不推荐使用某些功能,是否可以使其正常工作?

MySQL(InnoDB): Guid as Primary Key for a Distributed Database

docker - 使用docker快速切换iojs版本