SQLite path resolution misses db-path.php secret path
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 72/100
Línea de trabajo
Start with src/DB_Command_SQLite.php:65-99 and compare its path resolution with Automattic/wp-cli-sqlite-command/src/SQLiteDriverFactory.php:46-78 and the drop-in logic in wp-includes/sqlite/db.php:50-56. Reproduce with DB_PATH outside wp-content/database before FQDB is defined, then check the wp db file-path commands. Done when those commands resolve the explicit or recorded database path instead of the default .ht.sqlite.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Problem
DB_Command_SQLite::get_sqlite_db_path() (src/DB_Command_SQLite.php:65-99) only checks, in order:
FQDBconstant,FQDBDIR+DB_FILE, defaulting to<wp-content>/database/.ht.sqlite,- a few hardcoded legacy fallbacks.
Since sqlite-database-integration 3.1, the canonical resolution lives in the drop-in (wp-includes/sqlite/db.php:50-56):
if ( defined( 'DB_PATH' ) ) {
$database_storage = WP_SQLite_Storage::with_explicit_path( DB_PATH );
} elseif ( defined( 'FQDB' ) ) {
$database_storage = WP_SQLite_Storage::with_explicit_path( FQDB );
} else {
$database_storage = WP_SQLite_Storage::with_secret_path( FQDBDIR );
}
with_secret_path() reads the recorded randomized path from db-path.php (class-wp-sqlite-storage.php:118-126,386-407), migrating legacy .ht.sqlite (:204-210). Sites that set an explicit DB_PATH outside the web root (in our case, .local/sqlite/wordpress.sqlite via WP_DB_PATH) cannot be located by wp db * file-path operations whenever the drop-in has not yet defined FQDB. Until then, wp db export, size, and reset resolve the wrong file or report a missing database.
The sibling package already handles this. See Automattic/wp-cli-sqlite-command/src/SQLiteDriverFactory.php:46-78, which resolves DB_PATH → FQDB → FQDBDIR/db-path.php (@include) → legacy .ht.sqlite → with_secret_path(FQDBDIR)->initialize().
Proposed change
The same chain should be mirrored in get_sqlite_db_path(): check DB_PATH first, then FQDB, then @include FQDBDIR/db-path.php, then legacy .ht.sqlite. Alternatively, once the drop-in is loaded, the function could return the already-resolved FQDB, which the drop-in re-defines from the resolved path at db.php:75-77.
Repro
Set DB_PATH to a file outside wp-content/database, with no FQDB defined yet at the point wp db resolves the path. Run any wp db file-path subcommand. It targets <wp-content>/database/.ht.sqlite.
- Lenguaje dominante
- PHP
- Estrellas
- 76
- Forks
- 74
- Merge medio
- 2 h 50 min
- PR fusionados (30 d)
- 1
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de wp-cli/db-command
-
db tail commandAbiertocommand:db status:unconfirmed
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
wp-cli/db-command#359 ·
-
Size: separate data_length and index_lengthPosiblemente ocupada @swissspidy la tomó hace 57 días. Abiertocommand:db-size scope:documentation
Dificultad 3/5 1-2 días Aptitud para principiantes 65/100
wp-cli/db-command#348 · 1 comentario ·
-
query shouldn't require mysql/mariadb cli toolsPosiblemente ocupada @swissspidy la tomó hace 223 días. Abiertobug command:db-query
wp-cli/db-command#319 · 5 comentarios · 1 reacción · 2 asignados ·
-
Add `wp db status` command for quick database health overviewPosiblemente ocupada @swissspidy la tomó hace 283 días. Abiertocommand:db scope:distribution state:unconfirmed
wp-cli/db-command#306 · 5 comentarios · 1 reacción · 2 asignados ·
-
Giving multiple same arguments to mysqldump (via wp db export) only forwards the latestPosiblemente ocupada @astappiev la tomó hace 398 días. Abiertobug command:db-export
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
wp-cli/db-command#289 · 3 comentarios ·
Todos los issues de wp-cli/db-command
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
Los mantenedores suelen responder en 3 días
-
sync-en
Dificultad 2/5 1-3 horas Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
[Sync EN] Formatting improvements to "Large Objects (LOBs)" docs (#6056)Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertosync-en
Dificultad 1/5 Menos de una hora Aptitud para principiantes 74/100
Los mantenedores suelen responder en 1 día
-
Перевод устарел
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Los mantenedores suelen responder en 1 día
-
repo:cms
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
craftcms/cms#20613 · 1 comentario ·
Los mantenedores suelen responder en 1 día