WAMP:';没有已知的此类主机';尝试连接到mysql时

WAMP:';没有已知的此类主机';尝试连接到mysql时,mysql,apache,wamp,vhosts,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\... 我使用mysql或msqli而不是PDO时也

我得到了这个错误:

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\...
我使用mysql或msqli而不是PDO时也会遇到同样的错误,我担心的是:

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>
DocumentRoot“z:/work/”
选项如下符号链接
不允许超限
命令拒绝,允许
全盘否定
选项索引跟随符号链接
允许超越所有
命令拒绝,允许
全盘否定
通融

不幸的是,在我提出建议之前,我没有时间测试它。。。但如果DocumentRoot是
z:/work/
,那么目录
/
也是
z:/work/
,并且您已经将其设置为
拒绝所有
覆盖无
。稍后尝试使用
目录“z:/work/”
更改权限将被视为覆盖,因此不会应用?我建议您尝试将AllowOverride更改为all或删除deny all,以免花费太多时间寻找其他可能的解决方案。

我的建议是:

撤消对httpd.conf的所有更改。您的更改删除了Apache对WAMP主页的所有知识,即localhost。 注释掉虚拟主机配置的include并检查是否可以再次访问WAMP主页

确保WAMP处于“脱机”状态,这将确保C:\drive和C:\WAMP文件夹的安全

现在转到虚拟主机定义:

为了使wamp主页保持工作状态,第一个条目应如下所示,注意目录块应是VirtualHost定义的一部分,安全性定义确保您只能从127.0.0.1(localhost)访问wamp主页

####必须位于第一位,以便加载wamp菜单页面
服务器管理员webmaster@homemail.net
DocumentRoot“D:/wamp/www”
服务器名本地主机
服务器别名本地主机
命令拒绝,允许
全盘否定
允许从127.0.0.1开始
您定义的每个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>

DocumentRoot“Z:\work\mysite”
ServerName bullseye.local
服务器别名bullseye.local
允许超越所有
命令允许,拒绝
通融
DocumentRoot“C:\Users\Alex\Documents\GitHub\Myproject”
ServerName framework.local
ServerAlias www.framework.local
命令允许,拒绝
通融
取消对vhosts定义的Include in https.conf的注释,然后再次尝试访问其他项目

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

127.0.0.1 localhost 127.0.0.1 framework.local 127.0.0.1 bullseye.local 127.0.0.1本地主机 127.0.0.1 framework.local 127.0.0.1斗牛场。本地
phpMyAdmin只是一个客户端程序,它与mySQL服务器的运行位置无关。你能展示一下你用来连接数据库的代码吗?你真的有一个数据库服务器在本地主机上运行吗?是的,我的本地主机上有一个数据库(通过localhost/phpmyadmin创建)。如果我试图通过mysql或PDO连接,我会遇到同样的错误,我正在使用:$this->db=new PDO('mysql:dbname='.$database.';host='.$host.';charset=utf8',$user,$pass);where-host='localhost'user='root'和password=''你100%确定你是按照你所展示的方式来做的吗?因为100%确定,如果我使用$this->db=new PDO('mysql:dbname=mydatabase;host=localhost;charset=utf8','root','');这个,在这个帮助下解决了这个问题。谢谢!请不要使用你在那个博客上找到的解决方案,它太糟糕了,太危险了。它允许任何试图侵入你网站的黑客访问你的整个C驱动器,也允许任何人访问你的phpMyAdmin,这是一个非常糟糕的主意,因为这是完全访问你所有的数据ases。如果您遇到此问题,是因为您的电脑上有IPV4和IPV6可用。请尝试将httpd.conf文件中的'Listen*:80更改为Listen 0.0.0:80,并替换c:\wamp和phpmyadmin别名上的deny security。
$host = 'localhost';
$user = 'root';
$pass = '';
$database = 'mydatabase';
$this->db = new PDO('mysql:dbname=' . $database . ';host=' .$host . ';charset=utf8', $user, $pass);
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>
###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>
<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>
127.0.0.1 localhost 127.0.0.1 framework.local 127.0.0.1 bullseye.local