Не удается загрузить драйвер MYSQL из подкаталога сайта, можно из основного

0

Во-первых, я полностью новичок, когда речь идет о PHP.

Клиент купил скрипт, а сценарий установки не работал. Я вручную собрал файл конфигурации из того, как он написан в установщике.

Интерфейс работает отлично, загружает драйвер, подключается к базе данных.

При посещении администратора я получаю сообщение " Error: Could not load database driver type mysql! ". Файл конфигурации администратора выглядит так (конфигурация frontend очень похожа)

// HTTP;
define('HTTP_SERVER', 'http://...');
define('HTTP_CATALOG', 'http://...');
define('HTTP_IMAGE', 'http://...');
define('HTTP_ADMIN', 'http://...');

// HTTPS;
## truncated for Stack's sake, similar to above

// DIR;
define('DIR_APPLICATION', 'admin/');
define('DIR_SYSTEM', 'system/');
define('DIR_DATABASE', 'system/database/');
## the above line is exactly the same as the frontend config.php, as are most.
define('DIR_LANGUAGE', 'admin/language/');
define('DIR_TEMPLATE', 'admin/template/');
define('DIR_CONFIG', 'system/config/');
define('DIR_IMAGE', 'image/');
define('DIR_CACHE', 'system/cache/');
define('DIR_DOWNLOAD', 'download/');
define('DIR_LOGS', 'system/logs/');
define('DIR_CATALOG', 'catalog');

// DB;
define('DB_DRIVER', 'mysql');
define('DB_HOSTNAME', 'localhost');
define('DB_USERNAME', '...');
define('DB_PASSWORD', '...');
define('DB_DATABASE', '...');
define('DB_PREFIX', '...');

Большинство вышеперечисленных строк в точности совпадают с файлом конфигурации frontend, включая, конечно, учетные данные базы данных.

Но как только этот код пытается запустить, я получаю ошибку

$db = new DB(DB_DRIVER, DB_HOSTNAME, DB_USERNAME, DB_PASSWORD, DB_DATABASE);

Учетные данные верны, одна и та же строка присутствует в конфигурации frontend.

И index.php и admin/index.php начинаются очень точно с последним отсутствующим три, что, вероятно, не имеет значения. Я добавил их в раздел admin и по-прежнему получаю ту же ошибку.

Я попытался изменить пути, чтобы начать с / и ../ и по-прежнему получить ту же ошибку.

Теги:

2 ответа

1
Лучший ответ

Вы можете использовать __DIR__ для получения текущего каталога, а затем перейти туда, где он должен быть, например, define('DIR_DATABASE', __DIR__. '/system/database/'); или что-то вроде define('DIR_DATABASE', __DIR__. '/../system/database/');

  • 0
    Я все еще получаю ту же проблему, но это полезно знать. Я буду продолжать пытаться Спасибо за эту помощь.
  • 0
    Может быть, класс БД нужно правильно импортировать? Есть ли какие-либо операторы использования в верхней части файла?
Показать ещё 11 комментариев
0

Эта ошибка возникает из-за того, что пакет php-mysql установлен. Например, если вы используете Ubuntu, вы можете установить пакет,

sudo apt install php-mysql

в терминале. Затем подтвердите, что вы хотите продолжить установку.

Теперь вы должны иметь mysql для работы php нормально. Лучше перезагрузить веб-сервер, если необходимо.

Для apache:

sudo service apache2 restart

Для Nginx:

sudo service nginx restart && sudo service php-fpm restart

Если у вас есть php7. *, Используйте

sudo service nginx restart && sudo service php7.0-fpm restart

Измените "0" в соответствии с вашими потребностями (если у вас есть 7.1, 7.2 и т.д.).

  • 0
    Веб-интерфейс работает и правильно подключается к базе данных. Я не думаю, что это моя проблема.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню