WAMP:'尝试连接到mysql时'没有这样的主机'

时间:2013-06-12 06:45:52

标签: 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

得到相同的错误

2 个答案:

答案 0 :(得分:1)

我担心的是:

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/,那么目录/也是z:/work/,您已将其设置为{ {1}}和deny all。稍后尝试使用override none更改权限将被视为覆盖,因此不会应用?我建议你尝试将AllowOverride更改为all或者在花费太多时间寻找其他可能的解决方案之前删除所有deny all。

答案 1 :(得分:1)

我的建议是:

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

确保WAMP为“OffLine”,这将使C:\ drive和c:\ wamp文件夹保持安全。

现在,您的虚拟主机定义:

为了使wamp主页保持工作,第一个条目应如下所示,请注意Directory块应该是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中的Include以获取您的vhosts定义,并尝试再次访问其他项目。

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

127.0.0.1  localhost
127.0.0.1  framework.local
127.0.0.1  bullseye.local