Почему вы не используете встроенный драйвер SQLite?
$con = new SQLite3('ex.db');
$con->exec('PRAGMA foreign_keys = ON;');
var_dump($con->query('PRAGMA foreign_keys;')->fetchArray());
В соответствии с вашей проблемой: shell_exec()
(как следует из названия) выполняет команды оболочки.Это означает, что вы пытаетесь выполнить три (!) Команды оболочки, но вы хотите выполнить одну, а затем вы хотите выполнить еще 2 команды в интерактивном sqlite3-процессе, который вы запускали ранее.Это невозможно таким образом.Возможно, вы можете поиграть с stdin
, но поскольку PHP поставляется с поддержкой SQLite3, я не вижу причин, чтобы сделать его более сложным, чем это необходимо.