2009-07-24 2 views
0

Проблема: приложение для тестирования 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 
+1

Чтобы облегчить обнаружение ошибок, вы можете установить error_reporting для E_ALL, а display_errors - On, в файле php.ini (где этот файл находится в вашей системе, должен указываться в верхней части вывода phpinfo()); возможно, есть ошибка, которую вы просто не видите. –

+0

Хорошо, что показал, что у него возникли проблемы с подключением к mysql. Поэтому я переключил порт MAMP обратно на 3306 и вынул 8889 в свой код, и он сработал. Благодарю. –

+2

Для справки в будущем этот тип вопроса лучше подходит для ServerFault.com, дочернего сайта Stack Overflow. –

ответ

0

Не похоже, что модуль PDO правильно установлен в вашей конфигурации MAMP. при запуске phpinfo() у вас должен быть блок PDO, который определяет, какие драйверы PDO включены.

Моя страница phpinfo есть блок, как это:

 
PDO 
PDO support enabled 
PDO drivers  mysql 

Вы должны дважды проверить, чтобы убедиться, что вы установки MAMP имеют все необходимые библиотечные файлы доступны.

+0

Извините, пропустил эту строку: От phpinfo() PDO Драйвер для MySQL, версия клиентской библиотеки \t 5.0.41 –

+0

и как я могу проверить, есть ли у него все необходимые библиотеки? Куда бы я посмотрел, и что бы я искал? –

Смежные вопросы