php / php/php-src

SQLite: PDOException: open_basedir prohibits opening :memory:?cache=shared

Offen
#20,076 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

@ndossche arbeitet bereits daran.

Seit 06.10.2025.

  • #20080 von @ndossche — offen
Bug Extension: pdo_sqlite Extension: sqlite3 Status: Verified
Vorherrschende Sprache
C
Sterne
40.4k
Forks
8.1k
Ø Merge
2 T. 13 Std.
Gemergte PRs (30 T.)
96

Beschreibung

Description

The following code:

#!/usr/bin/env php
<?php

print "open_basedir: ";
var_dump(ini_get("open_basedir"));
print "\n";

$db = new \PDO("sqlite::memory:?cache=shared", null, null, [
    \PDO::ATTR_PERSISTENT => true,
    \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
    \PDO::ATTR_EMULATE_PREPARES => false,
    \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
]);

Resulted in this output:

$ ./sqlite-nomemory.php
open_basedir: string(0) ""

PHP Fatal error:  Uncaught PDOException: open_basedir prohibits opening :memory:?cache=shared in …\sqlite-nomemory.php:8
Stack trace:
#0 …\sqlite-nomemory.php(8): PDO->__construct('sqlite::memo
ry:...', NULL, Object(SensitiveParameterValue), Array)
#1 {main}
  thrown in …\sqlite-nomemory.php on line 8

But I expected this output instead:

I expected no error. Frankly, the code should just work.
PHP Version
PHP 8.4.13 (cli) (built: Sep 23 2025 15:17:09) (ZTS Visual C++ 2022 x64)
Copyright (c) The PHP Group
Zend Engine v4.4.13, Copyright (c) Zend Technologies
    with Zend OPcache v8.4.13, Copyright (c), by Zend Technologies
Operating System

Windows 10

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, die Reproduktion sqlite-nomemory.php unter Windows 10 mit PHP 8.4.13 auszuführen, und untersuche die vom PDO-Konstruktor erreichte PDO SQLite-Verarbeitung. Als erledigt gilt die Aufgabe, wenn die gezeigte Verbindung sqlite::memory:?cache=shared ohne die open_basedir-Ausnahme erfolgreich hergestellt wird; ein offener Pull Request ist bereits verlinkt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php, sqlite
Bereich
database
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
20/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.