После обновления WHM 64 нельзя использовать eximstat db. Код MySQL был изменен на PDO для доступа к sqlite3 db следующим образом:
$db = new PDO('sqlite:/var/cpanel/eximstats_db.sqlite3', DB_USER, DB_PASSWORD);
Ошибки, отбрасывающие таблицы, пустые. Фактически, новый пустой файл создавался в каталоге var / cpanel, вместо того, чтобы получать соединение с eximstats db. Удивительно, но CPanel: «View Sent summary» правильно отображает информацию, но я не могу получить доступ к моему сценарию, который находится в домене.
Любая помощь приветствуется.
Благодаря!!
Во время чата с отличной поддержкой cPanel мы выяснили это:
Это проблема с правами для таблицы eximstats_db.sqlite3: вы пытаетесь получить доступ к базе данных как к пользователю без полномочий root, но база данных принадлежит root и доступна для записи только root.
Теоретически вы должны иметь доступ к файлу напрямую, передавая флаг SQLITE3_OPEN_READONLY на вызов, чтобы открыть файл, как описано здесь:
https://secure.php.net/manual/en/sqlite3.open.php
Таким образом, предоставление доступа для чтения к таблицам eximstats_db.sqlite3 (NB! Их 3):
-rw----r-- 1 root root 135168 Jun 10 06:06 eximstats_db.sqlite3 -rw----r-- 1 root root 32768 Jun 12 14:34 eximstats_db.sqlite3-shm -rw----r-- 1 root root 1058512 Jun 12 14:34 eximstats_db.sqlite3-wal
и использование
$dbh = new SQLite3('/var/cpanel/eximstats_db.sqlite3',SQLITE3_OPEN_READONLY);
должен работать, но это не так. Это, по-видимому, ограничение в библиотеке SQlite3 в PHP: даже для доступа только для чтения он хочет заблокировать доступ к файлу. Поэтому вам нужно предоставить им также доступ на запись:
-rw----rw- 1 root root 135168 Jun 10 06:06 eximstats_db.sqlite3 -rw----rw- 1 root root 32768 Jun 12 14:34 eximstats_db.sqlite3-shm -rw----rw- 1 root root 1058512 Jun 12 14:34 eximstats_db.sqlite3-wal
Ничего не поделаешь. После этого вы увидите перебежчики, сбои и другие таблицы.
(Конечно, в реальной жизни вам может понадобиться создать группу и предоставить доступ только для чтения к этой группе, а не для всех).
Если вы не можете изменять права доступа к этим файлам базы данных, то единственным решением, которое я вижу, является копирование файлов в домен, изменение разрешений и последующее использование этих файлов:
$target = '/var/cpanel/eximstats_db.sqlite3-shm'; $newfile = '/home/yourdomain/where/your/script/is/eximstats_db.sqlite3'; copy($target, $newfile); chmod($newfile, 0777); // same with all 3 files.. $dbh = new SQLite3('eximstats_db.sqlite3'); // not '/var/cpanel/eximstats_db.sqlite3'!