PDO-соединение работает из командной строки, но не через Apache?

У меня есть очень простой тестовый сценарий:

<?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?

9
задан Will Martin 15 November 2011 в 16:13
поделиться