mysql - WAMP:尝试连接到 mysql 时为 'No such host is known'

标签 mysql apache wamp vhosts

我得到了这个错误:

Warning: PDO::__construct() [<a href='pdo.--construct'>pdo.--construct</a>]: [2002] php_network_getaddresses: getaddrinfo failed: No such host is known. (trying to connect via tcp://1:3306) in Z:\work\...

我的 localhost/phpmyadmin 工作正常,但我无法访问 localhost 或 127.0.0.1 ,我得到一个空白页面“禁止访问:您无权访问此服务器上的/。”

我的 80 端口上没有其他东西在运行

我修改了我的httpd.conf

DocumentRoot "z:/work/"

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

<Directory "z:/work/">
    Options Indexes FollowSymLinks
    AllowOverride all
    Order Deny,Allow
    Deny from all
    Allow from all
</Directory>

也添加到我的httpd-vhosts.conf

<Directory C:/Users/Alex/Documents/GitHub>
Order Deny,Allow   
Allow from all 
AllowOverride All
</Directory>

<Directory Z:/work>
Order Deny,Allow   
Allow from all 
AllowOverride All
</Directory>

<VirtualHost *:80>
    DocumentRoot "Z:\work\mysite"
    ServerName bullseye.local
</VirtualHost>

<VirtualHost *:80>   
DocumentRoot "C:\Users\Alex\Documents\GitHub\Myproject" 
ServerName framework.local 
</VirtualHost>

我的 phpmyadmin.conf 如下

Alias /phpmyadmin "c:/wamp/apps/phpmyadmin3.5.1/" 

<Directory "c:/wamp/apps/phpmyadmin3.5.1/">
Options Indexes FollowSymLinks MultiViews
AllowOverride all
    Order Deny,Allow
Deny from all
Allow from all
</Directory>

给出错误的代码:

$host = 'localhost';
$user = 'root';
$pass = '';
$database = 'mydatabase';
$this->db = new PDO('mysql:dbname=' . $database . ';host=' .$host . ';charset=utf8', $user, $pass);

我使用 mysql 或 msqli 而不是 PDO 时得到同样的错误

最佳答案

我的建议是:

撤消对 httpd.conf 的所有更改。您的更改删除了 Apache 对 WAMP 主页(即本地主机)的所有了解。 注释掉虚拟主机配置的包含并检查您是否可以再次访问 WAMP 主页。

确保 WAMP 处于“离线”状态,这将保证 C:\驱动器和 c:\wamp 文件夹的安全。

现在您的虚拟主机定义:

为了保持 wamp 主页正常工作,第一个条目应该如下所示,注意目录 block 应该是 VirtualHost 定义的一部分,安全定义确保您只能从 127.0.0.1 访问 wamp 主页(本地主机)

###must be first so the the wamp menu page loads
<VirtualHost *:80>
    ServerAdmin webmaster@homemail.net
    DocumentRoot "D:/wamp/www"
    ServerName localhost
    ServerAlias localhost
    <Directory  "D:/wamp/www">
        Order Deny,Allow
        Deny from all
        Allow from 127.0.0.1
</Directory>
</VirtualHost>

您定义的每个 VHOST 都应该像这样包含自己的安全设置

<VirtualHost *:80>
    DocumentRoot "Z:\work\mysite"
    ServerName bullseye.local
    ServerAlias bullseye.local
    AllowOverride All
    <Directory "Z:\work\mysite">
        Order Allow,Deny
        Allow from all 
    </Directory>
</VirtualHost>

<VirtualHost *:80>   
    DocumentRoot "C:\Users\Alex\Documents\GitHub\Myproject" 
    ServerName framework.local 
    ServerAlias www.framework.local
    <Directory "C:\Users\Alex\Documents\GitHub\Myproject">
        Order Allow,Deny
        Allow from all 
    </Directory>
</VirtualHost>

取消注释包含在 https.conf 中的虚拟主机定义,然后尝试再次访问您的其他项目。

我假设您已经对 c:\windows\system32\drivers\etc\hosts 文件进行了必要的更改以包含对所有虚拟主机的引用?如果不是,hosts 文件应该如下所示:-

127.0.0.1  localhost
127.0.0.1  framework.local
127.0.0.1  bullseye.local

关于mysql - WAMP:尝试连接到 mysql 时为 'No such host is known',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17059199/

相关文章:

php - 以 3 列显示动态表数据

php - 我将 laragon php 版本更改为 8,之后 apache 将无法运行

php - WAMP 和 PHP 中的未定义索引错误报告

wamp无法启动,因为缺少MSVCR110.dll

.htaccess - 如何在 WampServer 中配置 CakePHP 的 .htaccess 文件?

php - MySQL:连接三个表

mysql - cakephp查找最近24小时的记录

php - 获取两个日期之间的所有日期,甚至不存在,其中查询跳过范围内的现有记录

apache - 如何从 apache 中删除日期 header ?

mysql - SQL 按字段将总和数据连接在一起