如何使用内置Web服务器返回.php文件的内容,url中没有.php扩展名

如何使用内置Web服务器返回.php文件的内容,url中没有.php扩展名,php,Php,所以我刚开始学习PHP,我正在做一个本地项目来测试它 我正在使用内置的Web服务器 使用命令php-S localhost:8000 router.php 我想导航到test.php文件,它位于index.php文件旁边http://localhost:8000/test 但只有使用http://localhost:8000/test.php 在内置Web服务器页面上,它提到了如何为.el文件提供服务 从那以后我想到了 <?php // router.php $pathName = $_S

所以我刚开始学习PHP,我正在做一个本地项目来测试它

我正在使用内置的Web服务器 使用命令
php-S localhost:8000 router.php

我想导航到test.php文件,它位于
index.php文件旁边http://localhost:8000/test

但只有使用
http://localhost:8000/test.php

在内置Web服务器页面上,它提到了如何为.el文件提供服务

从那以后我想到了

<?php
// router.php
$pathName = $_SERVER['REQUEST_URI'];
$pathName = str_replace("/", "\\", $pathName);
$file =   __DIR__ . $pathName . ".php";
if(file_exists($file)){       
           include($file);
       }else{
           return false;
       }
?>

您的router.php几乎是正确的

如果要显示php文件的内容,请像下面这样使用readfile

<?php
// router.php
$script = $_SERVER["REQUEST_URI"];
$path = pathinfo($script);
if (empty($path["extension"])) {
    $php = ".$script.php";
    if(file_exists($php)){
        readfile($php);
    }else{
        return FALSE;
    }
}else{
    return FALSE;
}
?>
<?php
// router.php
$script = $_SERVER["REQUEST_URI"];
$path = pathinfo($script);
if (empty($path["extension"])) {
    $php = ".$script.php";
    if(file_exists($php)){
        include($php);
    }else{
        return FALSE;
    }
}else{
    return FALSE;
}
?>

当不带扩展名的access存在时,这将返回PHP文件的内容。并在不存在或无法通过扩展访问时正常运行

或者,如果要运行php文件,请像下面这样使用include

<?php
// router.php
$script = $_SERVER["REQUEST_URI"];
$path = pathinfo($script);
if (empty($path["extension"])) {
    $php = ".$script.php";
    if(file_exists($php)){
        readfile($php);
    }else{
        return FALSE;
    }
}else{
    return FALSE;
}
?>
<?php
// router.php
$script = $_SERVER["REQUEST_URI"];
$path = pathinfo($script);
if (empty($path["extension"])) {
    $php = ".$script.php";
    if(file_exists($php)){
        include($php);
    }else{
        return FALSE;
    }
}else{
    return FALSE;
}
?>

当access不带扩展且存在时,这将返回PHP脚本的输出。并在不存在或无法通过扩展访问时正常运行


顺便说一句,只使用内置服务器进行测试,不向公众公开安全信息。

@除非在使用内置web服务器时不能使用
.htaccess
文件:)@riggsfully Ah;我的错。我从来没有使用过内置的。这可能会有帮助,或者事实上可能是一个错误DUP@RiggsFolly这似乎不是同一个问题,但我使用router.php文件来实现我的目标似乎是正确的。我确实想要“include”功能,但是您检查文件是否存在的方法似乎比我的字符串替换方法要好。如果您将readfile更改为再次包含,我将接受您的回答。