Проблема: приложение для тестирования Doctrine не работает из-за проблемы с драйвером.Проблема с MAMP для работы с PDO-MySQL
Установка: Mac OS X 10.5.7 (не сервер), MAMP 1.7.2, доктрина 2.2.1, PHP 5.2.6
Я следую учению documentation, чтобы попытаться создать среду разработки на мой локальный компьютер. Результат работы страницы из Интернета (через MAMP) показывает пустой экран (я предполагаю, что ошибки не отображаются через MAMP). Если я запускаю страницу в своей тестовой среде (Debian Lenny), все работает отлично, и на экране появляется выход.
Я пытался выяснить это в течение нескольких часов, и я не смог. Любое понимание очень ценится.
Вот результат при запуске из командной строки.
justingiboney$ php test.php
Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in /Applications/MAMP/htdocs/doctrine_test_site/bootstrap.php:16
Stack trace:
#0 /Applications/MAMP/htdocs/doctrine_test_site/bootstrap.php(16): PDO->__construct('mysql:dbname=fa...', '****', '****')
#1 /Applications/MAMP/htdocs/doctrine_test_site/test.php(4): require_once('/Applications/M...')
#2 {main}
thrown in /Applications/MAMP/htdocs/doctrine_test_site/bootstrap.php on line 16
Вот test.php
<?php
// test.php
require_once('bootstrap.php');
$conn->export->createTable('test', array('name' => array('type' => 'string')));
$conn->execute('INSERT INTO test (name) VALUES (?)', array('jwage'));
$stmt = $conn->prepare('SELECT * FROM test');
$stmt->execute();
$results = $stmt->fetchAll();
print_r($results);
?>
Вот bootstrap.php
<?php
// bootstrap.php
/**
* Bootstrap Doctrine.php, register autoloader specify
* configuration attributes and load models.
*/
require_once(dirname(__FILE__) . '/lib/vendor/doctrine/Doctrine.php');
spl_autoload_register(array('Doctrine', 'autoload'));
$manager = Doctrine_Manager::getInstance();
$dsn = 'mysql:dbname=****;host=127.0.0.1:8889';
$user = '****';
$password = '****';
$dbh = new PDO($dsn, $user, $password);
$conn = Doctrine_Manager::connection($dbh);
$conn->setOption('****', $user);
$conn->setOption('****', $password);
?>
Если я запускаю phpinfo() через страницу MAMP я вижу несколько строк, которые делают это смотреть как PDO-MySQL установлено
--with-pdo-mysql=shared,/Applications/MAMP/Library
PDO drivers | sqlite2, sqlite, pgsql, mysql
PDO Driver for MySQL, client library version 5.0.41
Чтобы облегчить обнаружение ошибок, вы можете установить error_reporting для E_ALL, а display_errors - On, в файле php.ini (где этот файл находится в вашей системе, должен указываться в верхней части вывода phpinfo()); возможно, есть ошибка, которую вы просто не видите. –
Хорошо, что показал, что у него возникли проблемы с подключением к mysql. Поэтому я переключил порт MAMP обратно на 3306 и вынул 8889 в свой код, и он сработал. Благодарю. –
Для справки в будущем этот тип вопроса лучше подходит для ServerFault.com, дочернего сайта Stack Overflow. –