У меня есть очень простой тестовый сценарий:
<?php
$DSN = "mysql:host=db.example.edu;port=3306;dbname=search_data";
try {
$DB = new PDO($DSN, "username", "super-secret-password!");
} catch (PDOException $e) {
header('Content-Type: text/plain');
print "Could not connect to database, rawr. :-(";
exit;
}
$SQL = "SELECT phrase FROM search ORDER BY RAND() LIMIT 10";
foreach($DB->query($SQL) as $row){
print $row['phrase']."\n";
}
?>
Когда я выполняю этот сценарий из командной строки, он отлично работает:
$ php test.php
corporal punishment
Stretches
voluntary agencies and the resettlement of refugees
music and learning
Nike Tiger Woods Scandal
Hermeneia
PSYCHINFO
anthony bourdain
Black-White Couples and their Social Worlds
colonization, hodge
Но когда я обращаюсь к тому же самому сценарию через свой веб-браузер, там написано:
Could not connect to database, rawr. :-(
Я пробовал var_dump
при ошибке, и появляется сообщение: «SQLSTATE [HY000] [2003] Не удается подключиться к серверу MySQL на 'db.example.edu' ( 13) ".
Это вызывает недоумение. Это точно такой же сценарий на том же сервере - почему он работает, когда я выполняю его из командной строки, но не работает, когда его выполняет Apache?