为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用内置网络服务器返回 .php 文件的内容,网址中不带 .php 扩展名

如何使用内置网络服务器返回 .php 文件的内容,网址中不带 .php 扩展名

PHP
哈士奇WWW 2023-07-07 10:37:17
所以我刚刚开始学习 PHP,并且正在制作一个本地项目来测试它。我正在使用内置的网络服务器 https://www.php.net/manual/en/features.commandline.webserver.php 使用命令php -S localhost:8000 router.php我想导航到我的 test.php 文件,该文件位于我的 index.php 文件旁边http://localhost:8000/test但只有当我使用时它才有效http://localhost:8000/test.php在内置的网络服务器页面上,它提到了如何提供 .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;       }?>但这似乎不对。我该如何以正确的方式去做呢?有人能指出我正确的方向吗?在 stackoverflow 上找不到任何内容,但这可能只是因为我不知道要搜索什么。编辑:我确实想要包含功能而不是读取文件,我只是想知道检查 .php 文件是否存在的方法是否正确。
查看完整描述

1 回答

?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

你的 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 文件的内容。当它不存在或通过扩展访问时正常运行。


或者,如果您想运行 php 文件,请使用include ,如下所示:


<?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;

}

?>

当没有扩展名访问且存在时,这将返回 PHP 脚本的输出。当它不存在或通过扩展访问时正常运行。


顺便说一句,仅使用内置服务器进行测试,而不是为了安全而向公众开放。


查看完整回答
反对 回复 2023-07-07
  • 1 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号