Во-первых, я полностью новичок, когда речь идет о 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 и по-прежнему получаю ту же ошибку.
Я попытался изменить пути, чтобы начать с /
и ../
и по-прежнему получить ту же ошибку.
Вы можете использовать __DIR__
для получения текущего каталога, а затем перейти туда, где он должен быть, например, define('DIR_DATABASE', __DIR__. '/system/database/');
или что-то вроде define('DIR_DATABASE', __DIR__. '/../system/database/');
Эта ошибка возникает из-за того, что пакет 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 и т.д.).