Исключение вы получаете:
PDOException: Не удалось найти драйвер
дается PDO PHP всякий раз, когда драйвер для вашей базы данных не может быть найден. PDO нужен драйвер для работы с различными базами данных (например, Sqlite, Mysql, ...). И PDO ищет драйвер, основанный на DSN. В вашем случае DSN является:
sqlite:app/database/production.sqlite
И для водителя смотрится только в той части, до первого двоеточия («:
»):
sqlite
Строка sqlite
используется, чтобы найти sqlite3 водитель (см. PDO_SQLITE DSN
in the PHP manual).
Существует только одно место во всех PDO, где выбрано это исключение (php 5.4 lxr), и его бросают только в случае текста перед двоеточием в DSN. Драйвер не найден. Это также можно ожидать от сообщения об ошибке.
Как вы уже сделали проверки, указанные в the best answer to "How to determine if PDO is enabled in PHP", вы уже уверены, что был добавлен расширение PDO sqlite .
Просто, чтобы сделать это ясно: расширение PHP, который содержит драйвер PDO для SQLite называется pdo_sqlite
, которые вы проверили, чтобы быть загружен.
Единственное объяснение, которое я есть то, что вы сделали загрузить расширение но PHP не смог загрузить драйвер .По данным источников PHP (php 5.4 lxr), это может иметь ровно две причины:
- драйвер PDO требует другой версии API PDO
- PDO должен быть загружен перед загрузкой любого драйвера PDO
(технически есть является третьей причиной, но ее следует игнорировать: добавление драйвера в хэш-таблицу драйверов PDO не удалось, это довольно внутреннее и не имеет ничего общего с PDO)
Поскольку расширение загружено, но драйвер не является Я подозреваю, что возникла проблема с регистрацией драйвера PDO. Вы должны проверить журнал ошибок PHP для ошибок при запуске. Как вы говорите, у вас есть эта проблема на общем хостере, вам нужно обратиться в службу поддержки, где находится журнал ошибок PHP. Вы ищете ошибки при запуске. Иногда эти ошибки также отображаются в журнале ошибок веб-сервера в зависимости от того, какой интерфейс PHP SAPI используется.
Просьба также предоставить информацию от phpinfo()
, чтобы можно было дать дополнительные указания. С предоставленной информацией вы можете быть уверены, что драйвер sqlite для PDO не был загружен. Это проблема конфигурации.
Вы сделали шаги из [Как определить, включен ли PDO в PHP?] (Http://stackoverflow.com/q/6113262/367456) - Особенно в этом anser: http://stackoverflow.com/ а/6113496/367456. Если нет, сделайте это. Затем или, если да, укажите результаты в своем вопросе. Это важно для понимания того, что отличает ваш вопрос от существующих от sqlite и с тем же сообщением об ошибке. – hakre
Использование extension_loaded ('pdo') и extension_loaded ('pdo_sqlite') вернули true. Есть ли другое место, которое я мог бы проверить? Кажется, что только приложение laravel жалуется на то, что не найдет водителя. – Terry
Эти результаты выглядят многообещающими, драйверы загружены. Следующая точка, которую я проверил бы, это если файл sqlite-database-file можно найти. Пожалуйста, укажите абсолютный путь 'app/database/production.sqlite' из корневого каталога, начиная с'/'. – hakre