1

我收到了这个错误:

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 得到相同的错误

4

2 回答 2

1

我的建议是:

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

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

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

为了保持 wamp 主页正常工作,第一个条目应如下所示,注意 Directory 块应该是 VirtualHost 定义的一部分,安全定义确保您只能从 127.0.0.1(localhost) 访问 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>

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

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

127.0.0.1 本地主机
127.0.0.1 框架.本地
127.0.0.1 靶心.local
于 2013-06-13T10:32:06.130 回答
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/那么 Directory/也是z:/work/,并且您已将其设置为deny alland override none。稍后尝试更改权限Directory "z:/work/"将被视为覆盖,因此不会被应用?我建议您在花费太多时间寻找其他可能的解决方案之前尝试将 AllowOverride 更改为 all 或从 / 中删除全部拒绝。

于 2013-06-12T18:13:58.363 回答