Actualicé mi instancia de WordPress de 4.5 a 4.8 y, por alguna razón, mi variable de entorno booleana ahora regresa como una cadena de “falso” en lugar de false
. Dado que mi versión de PHP no ha cambiado, estoy un poco desconcertado por el cambio. Sin embargo, lo que es más importante, sobre el futuro, ¿cuál es la mejor manera de administrar los valores booleanos en PHP a través de variables de entorno?
Aquí está la línea .env que tengo:
WP_FORCE_SSL_ADMIN=false
Aquí está la línea que tenía en mi wp-config.php que está regresando true
debido a la conversión de cadenas.
define('FORCE_SSL_ADMIN', getenv('WP_FORCE_SSL_ADMIN'));
Aquí está el var_dump:
["WP_FORCE_SSL_ADMIN"]=>
string(5) "false"
Sé que simplemente puedo refactorizar la definición para tener en cuenta la conversión de cadena, pero me molesta que no entiendo qué cambió cuando nada debería haberlo hecho. Esto funcionó bien para wordpress versión 4.5.
¿Busca una respuesta para explicar el mejor método para pasar variables booleanas de mi entorno a PHP, o siempre tengo que tener en cuenta la conversión de cadenas?
gdbj
En caso de que alguien venga aquí buscando la respuesta de cómo lo resolví, lo que hice fue simplemente hacer una comparación con la cadena de “verdadero”.
define('FORCE_SSL_ADMIN', strtolower(getenv('WP_FORCE_SSL_ADMIN')) === "true");
Si bien esto funciona, todavía no me parece del todo correcto, como si me faltara algo.
-
Buena respuesta, pero solo funciona para “verdadero”, no para “VERDADERO”, “Verdadero”, etc., que son valores válidos
– Ramesh Navi
25 de agosto de 2020 a las 3:42
-
Es un truco en cualquier caso.
– gdbj
26 de agosto de 2020 a las 21:45
-
@RameshNavi Agregué
strtolower()
alrededor degetenv()
método, que debería resolver ese problema.– Jabarí
24 de febrero de 2021 a las 5:43
WordPress4.8 probablemente no está pasando
INI_SCANNER_TYPED
al analizar el.env
expediente – EDITAR Leí totalmente mal la pregunta, mi error.– ʰᵈˑ
12 de septiembre de 2017 a las 16:17
Mmm…. Documentos PHP dilo
getenv
devuelve un cuerda (oFALSE
si no existe), por lo que aparentemente siempre tendrá que tener en cuenta la conversión de cadenas.– nombre_usuario_aleatorio
12 de septiembre de 2017 a las 16:18
También leí eso. Debe ser que WP cambió la forma en que interpreta FORCE_SSL_ADMIN para que ya no interprete la cadena “falso” como falso. Suspiro…
– gdbj
12/09/2017 a las 16:25
Dudo que. Que
define
La línea es 100% PHP, nada que ver con PHP en absoluto. supongo que eras no recogiendo la variable de entorno en primer lugar, razón por la cual estaba regresandoFALSE
(booleano), por lo que parecía estar haciendo lo que querías, pero en realidad no lo estaba viendo todo.– nombre_usuario_aleatorio
12/09/2017 a las 16:26
cierto, pero WP es el que usa la variable creada por define? Supongo que PHP siempre almacenó la cadena “falso”, pero WP es el que usa esa variable de manera diferente. Esto tiene sentido ya que el cambio está relacionado con mi actualización.
– gdbj
12/09/2017 a las 16:35