Cant доступ eximstats sqlite3 db после обновления WHM64

После обновления 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'!