Heim >Backend-Entwicklung >PHP-Tutorial >Die Putenv-Funktion von laravel-php kann nicht auf Chinesisch verwendet werden
Wenn Sie Laravel kennen, können Sie einen Blick auf den obigen Abschnitt werfen. Wenn Sie dies nicht tun, gehen Sie einfach direkt unter die Trennlinie Für jedes Element in
.env, hier ist MAIL_DRIVER als Beispiel. Wenn in „my“ geändert wird, kann der Wert normal mit der env-Funktion abgerufen werden, wenn
in „I“ geändert wird. Der Wert kann nicht normal mit der env-Funktion ermittelt werden
<code>MAIL_DRIVER=我 var_dump(env(MAIL_DRIVER'')); // NULL MAIL_DRIVER=我的 var_dump(env(MAIL_DRIVER'')); // 我的</code>Ich muss sagen, dass Laravel den Quellcode der Env-Funktion studiert hat ;
- ---------------------------------------Verstehen und nicht Verstehe die Trennlinie des Laravel-Frameworks ------------------------------------------ --- -----
PROJECT_NAME kann in phpinfo nach Umgebung gesucht werden
<code>putenv("PROJECT_NAME=我的"); phpinfo();</code>
PROJECT_NAME kann in der Umgebung in phpinfo nicht gefunden werden
<code>putenv("PROJECT_NAME=我"); phpinfo();</code>Bitte sagen Sie mir, liebe Freunde, warum ist das so? Wie kann man den chinesischen Wert problemlos festlegen?
Antwortinhalt:
Wenn Sie Laravel kennen, können Sie einen Blick auf den obigen Abschnitt werfen. Wenn Sie ihn nicht kennen, gehen Sie einfach direkt unter die Trennlinie Für jedes Element inDies wird auch bei einigen anderen chinesischen Wörtern passieren;
Ich muss sagen, dass Laravel den Quellcode der Env-Funktion studiert hat ;
- ---------------------------------------Verstehen und nicht Verstehe die Trennlinie des Laravel-Frameworks ------------------------------------------ --- -----
<code>MAIL_DRIVER=我 var_dump(env(MAIL_DRIVER'')); // NULL MAIL_DRIVER=我的 var_dump(env(MAIL_DRIVER'')); // 我的</code>PROJECT_NAME kann in phpinfo nach Umgebung gesucht werden
PROJECT_NAME kann in der Umgebung in phpinfo nicht gefunden werden
<code>putenv("PROJECT_NAME=我的"); phpinfo();</code>
Ich habe es auch ausprobiert und festgestellt, dass es fehlschlägt und
<code>putenv("PROJECT_NAME=我"); phpinfo();</code>zurückgibt, solange ich
oder ähnliches in der CGI-Umgebung aufrufe (vier Bytes, das Gleiche gilt für japanisches Kana), aber das gibt es Kein Problem in der CLI-Umgebung:
Ich finde es auch ziemlich verwirrend, nachdem ich bei Google gesucht habe. Ich hoffe, dass andere Leute gute Antworten haben können.
putenv('PROJECT_NAME=掉')
Aber da der Fragesteller Laravel verwendet und sich nicht besonders mit false
beschäftigt, sondern nur den Wert in
<code>➜ ~ $ php -r "var_dump(putenv('PROJECT_NAME=我')); echo getenv('PROJECT_NAME');" bool(true) 我 </code>
Fügen Sie diese Funktion in
Ihres eigenen Projekts hinzu (oder an anderen Orten, an denen benutzerdefinierte Hilfsfunktionen platziert werden. Wenn nicht, erstellen Sie eine neue):
putenv
Passen Sie eine neue Funktion an, um Umgebungsvariablen abzurufen, und ersetzen Sie alle .env
im Verzeichnis
(ich habe helpers.php
ausprobiert, und das Schreiben von
<code>if (! function_exists('menv')) { /** * Gets the value of an environment variable by getenv() or $_ENV. * * @param string $key * @param mixed $default * @return mixed */ function menv($key, $default = null) { if (function_exists('putenv') && function_exists('getenv')) { // try to read by getenv() $value = getenv($key); if ($value === false) { return value($default); } } else { // try to read from $_ENV or $_SERVER if (isset($_ENV[$key])) { $value = $_ENV[$key]; } elseif (isset($_SERVER[$key])) { $value = $_SERVER[$key]; } else { return value($default); } } switch (strtolower($value)) { case 'true': case '(true)': return true; case 'false': case '(false)': return false; case 'empty': case '(empty)': return ''; case 'null': case '(null)': return; } if (strlen($value) > 1 && Str::startsWith($value, '"') && Str::endsWith($value, '"')) { return substr($value, 1, -1); } return $value; } }</code>
Sie können sich darauf beziehen. Das habe ich getan, um zu verhindern, dass einige Benutzer config/
env
verwenden können