首页  >  文章  >  后端开发  >  PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 之间的主要区别是什么?

PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 之间的主要区别是什么?

Patricia Arquette
Patricia Arquette原创
2024-11-02 07:28:02810浏览

What are the key differences between PHP_SELF, PATH_INFO, SCRIPT_NAME, and REQUEST_URI?

了解 PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI**

开发 PHP 应用程序时,了解这些服务器变量之间的差异至关重要。以下是它们的用途细分:

PHP_SELF

  • 通常指向当前脚本文件,例如/index.php/faq/whatever
  • 在 CodeIgniter 中,它始终是 index.php,因为请求被路由到主控制器。

PATH_INFO

  • 包含脚本名称后的路径信息(不包括查询参数),例如/faq/whatever
  • 用于访问 URI 的特定部分。

SCRIPT_NAME

  • 指向正在执行的实际 PHP 脚本文件,例如/test.php
  • 与 PHP_SELF 不同,它不包含任何路径信息或查询参数。

REQUEST_URI

  • 表示完整的请求URI,包括路径信息和查询参数,例如/test.php?foo=bar
  • 用于在不访问服务器配置的情况下确定完整的 URL。

实际差异

示例 1:PHP_SELF 与 SCRIPT_NAME

如果请求的 URL 格式为 /test.php/foo/bar:

  • PHP_SELF:/test.php/foo/bar
  • SCRIPT_NAME:/test.php

示例 2:REQUEST_URI 与 SCRIPT_NAME

如果在 URL 中输入非空查询字符串:

  • SCRIPT_NAME: /test.php
  • REQUEST_URI:/test.php?foo=bar

示例 3:使用 Apache Mod Rewrite 的 REQUEST_URI 与 SCRIPT_NAME

使用服务器端重定向,例如 /test.php 重写为 /test2.php:

  • REQUEST_URI: / test.php
  • SCRIPT_NAME:/test2.php

示例 4:带有错误处理的 REQUEST_URI 与 SCRIPT_NAME

  • 使用 Apache mod_rewrite,/test.php 中的 404 错误可能会导致:

    • REQUEST_URI: /test.php
    • SCRIPT_NAME: /404error.php

选择使用哪个服务器变量取决于具体的应用程序要求。例如,如果您需要在没有查询参数的情况下访问路径信息,则 PATH_INFO 就适合。如果您想要完整的请求 URI,REQUEST_URI 会提供此信息。

以上是PHP_SELF、PATH_INFO、SCRIPT_NAME 和 REQUEST_URI 之间的主要区别是什么?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn