Die Putenv-Funktion von laravel-php kann nicht auf Chinesisch verwendet werden

WBOY
Freigeben: 2016-10-11 14:23:25
Original
1332 Leute haben es durchsucht

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

Dies wird auch bei einigen anderen chinesischen Wörtern passieren;
<code>MAIL_DRIVER=我
var_dump(env(MAIL_DRIVER''));  // NULL


MAIL_DRIVER=我的
var_dump(env(MAIL_DRIVER''));  // 我的</code>
Nach dem Login kopieren
Nach dem Login kopieren
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>
Nach dem Login kopieren
Nach dem Login kopieren

PROJECT_NAME kann in der Umgebung in phpinfo nicht gefunden werden

<code>putenv("PROJECT_NAME=我");
phpinfo();</code>
Nach dem Login kopieren
Nach dem Login kopieren
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 in

.env ist hier MAIL_DRIVER als Beispiel aufgeführt. Wenn

in „my“ geändert wird, kann der Wert normal mit der env-Funktion abgerufen werden. Der Wert kann nicht normal mit der env-Funktion ermittelt werden

Dies 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>
Nach dem Login kopieren
Nach dem Login kopieren
PROJECT_NAME kann in phpinfo nach Umgebung gesucht werden



PROJECT_NAME kann in der Umgebung in phpinfo nicht gefunden werden

Bitte sagen Sie mir, liebe Freunde, warum ist das so? Wie kann man den chinesischen Wert problemlos festlegen?
<code>putenv("PROJECT_NAME=我的");
phpinfo();</code>
Nach dem Login kopieren
Nach dem Login kopieren

Ich habe es auch ausprobiert und festgestellt, dass es fehlschlägt und
<code>putenv("PROJECT_NAME=我");
phpinfo();</code>
Nach dem Login kopieren
Nach dem Login kopieren
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

reibungslos erhalten möchte, können Sie einige Tipps verwenden:
<code>➜  ~ $ php -r "var_dump(putenv('PROJECT_NAME=我')); echo getenv('PROJECT_NAME');"
bool(true)
我 </code>
Nach dem Login kopieren

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):

putenvPassen Sie eine neue Funktion an, um Umgebungsvariablen abzurufen, und ersetzen Sie alle .env im Verzeichnis

durch

(ich habe helpers.php ausprobiert, und das Schreiben von

wird dadurch nicht beeinträchtigt)
<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>
Nach dem Login kopieren

Sie können sich darauf beziehen. Das habe ich getan, um zu verhindern, dass einige Benutzer config/env verwenden können

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage