WAMP: «Такой хост не известен» при попытке подключения к mysql

Я получил эту ошибку:

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


person Alex Beauchemin    schedule 12.06.2013    source источник
comment
phpMyAdmin — это просто клиентская программа, она не имеет никакого отношения к тому, где работает сервер mySQL. Можете ли вы показать, какой код вы используете для подключения к базе данных, и действительно ли у вас есть сервер базы данных, работающий на локальном хосте?   -  person Pekka    schedule 12.06.2013
comment
Да, у меня есть база данных на моем локальном хосте (созданная через localhost/phpmyadmin). Я получаю ту же ошибку, если пытаюсь подключиться через mysql или PDO, я использую это: $this-›db = new PDO('mysql:dbname= '.$database.';host=' .$host.';charset=utf8', $user, $pass); где хост = 'localhost', пользователь = 'root' и пароль = ''   -  person Alex Beauchemin    schedule 12.06.2013
comment
Вы на 100% уверены, что делаете так, как показываете? Поскольку PHP - переменные не заменяются в строке подключения PDO   -  person Pekka    schedule 12.06.2013
comment
Уверен на 100%, та же проблема, если я использую $this-›db = new PDO('mysql:dbname=mydatabase;host=localhost;charset=utf8', 'root', '');   -  person Alex Beauchemin    schedule 12.06.2013


Ответы (2)


Мое предложение было бы:

Отмените все ваши изменения в httpd.conf. Ваши изменения удалили все знания Apache о домашней странице WAMP, то есть о локальном хосте. Закомментируйте включение конфигурации виртуальных хостов и убедитесь, что вы снова можете получить доступ к домашней странице WAMP.

Убедитесь, что WAMP находится в автономном режиме, это обеспечит безопасность диска C:\ и папки c:\wamp.

Теперь к вашим определениям виртуальных хостов:

Чтобы домашняя страница wamp работала, первая запись должна быть такой, как показано ниже, обратите внимание, что блок каталогов должен быть частью определения VirtualHost, а определение безопасности гарантирует, что вы можете получить доступ к домашней странице wamp только с 127.0.0.1 (localhost)

###must be first so the the wamp menu page loads
<VirtualHost *:80>
    ServerAdmin [email protected]
    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>

Раскомментируйте Include in https.conf для ваших определений 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
person RiggsFolly    schedule 13.06.2013
comment
Это, с помощью этого webtrunghieu.info/web/ решил проблему. Спасибо! - person Alex Beauchemin; 14.06.2013
comment
Пожалуйста, не используйте решение, которое вы нашли в этом блоге, оно настолько плохое, что опасно. Это позволяет получить доступ ко всему вашему диску C любому хакеру, которому удастся проникнуть на ваши сайты, а также позволяет любому получить доступ к вашему phpMyAdmin, что очень плохо, поскольку это полный доступ ко всем вашим базам данных. Если у вас возникла эта проблема, это связано с наличием IPV4 и IPV6 на вашем ПК. Вместо этого попробуйте изменить 'Listen *:80 на Listen 0.0.0.0:80 в вашем файле httpd.conf и заменить запрет безопасности на c:\wamp и псевдоним phpmyadmin. - person RiggsFolly; 14.06.2013

Меня беспокоит следующее:

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/, и вы установили для него значения deny all и override none. Позже попытка изменить разрешение с помощью Directory "z:/work/" будет считаться переопределением и, следовательно, не будет применяться? Я предлагаю вам попробовать изменить AllowOverride на all или удалить запрет на все из /, прежде чем вы потратите слишком много времени на поиск других возможных решений.

person Sarah Kemp    schedule 12.06.2013