2017-11-03 4 views
0

Ich habe ein bestehendes Laravel-Projekt. Ich führe es auf Windows 10 Maschine. Ich bin der folgende Befehl hatVorwärts und rückwärts slash php

cd c:/xampp/htdocs/demo/ (A file called index.php is there inside demo folder) 

php -S localhost:8000 

index.php ausgeführt Inhalte wie

folgt
<?php 
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$uri = urldecode($uri); 
$paths = require __DIR__.'/bootstrap/paths.php'; 
$requested = $paths['public'].$uri; 
// This file allows us to emulate Apache's "mod_rewrite" functionality from the 
// built-in PHP web server. This provides a convenient way to test a Laravel 
// application without having installed a "real" web server software here. 
if ($uri !== '/' and file_exists($requested)) 
    { 
    return false; 
    } 
    require_once $paths['public'].'/index.php'; 
?> 

Jetzt ist das Problem mit __DIR__ ist. Wenn ich versuche, den Pfad zu drucken, ist es das Mischen von Vorwärts- und Rückwärts-Schrägstrichen.

Zum Beispiel ($ angefordert)

C:\xampp\htdocs\demo\bootstrap/../public/ 

Dies kann die App läuft nicht lassen und wirft internen Serverfehler (500)

Viele Orte im Projekt haben __DIR__. Ich kann es nicht an einem Ort ersetzen.

Kann jemand helfen.

+1

auf Windows, vorwärts und rückwärts Slash Mixing, in meiner Erfahrung, funktioniert gut. Es könnte sein, dass der Server nicht berechtigt ist, den Ordner zu betreten, auch könnten Sie versuchen, Apache zu verwenden, anstatt der PHP eingebauten Server – SmartCoder

Antwort

1

Sie können mit einem anderen von slash ersetzen, nachdem gemischtem String

Beispiel bekommen:

$requested = $paths['public'].$uri; 
$requested = str_replace("\\", "/", $requested); 

Dies alles \ mit / ersetzen wird.

+0

Ich habe __DIR__ während des Projekts – Sam

0

können Sie mit real_path()http://php.net/manual/en/function.realpath.php

Eine andere Lösung und DIRECTORY_SEPARATOR stattdessen wäre nicht spielen weder Schrägstrich oder einen umgekehrten Schrägstrich zu codieren. Es gibt OS-spezifischen Pfad aus, egal wo Sie Ihren Code ausführen.

function file_build_path(...$segments) { 
    return join(DIRECTORY_SEPARATOR, $segments); 
} 

file_build_path(__DIR__, 'public', 'index.php'); 
Verwandte Themen