Apache / PHP会混淆dir名称和脚本文件名吗?

时间:2013-01-18 19:56:05

标签: php apache lamp apache-config

为什么网址如http://192.168.1.116/wordpress/wp-content/themes/bktf/frameworks/back-end/theme-options/options/fields/font/field_font.js.php?ver=1358535557

...最终服务/wordpress/wp-content/themes/bktf/frameworks/back-end/theme-options.php/options/fields/font/field_font.js.php(这也是`$ _SERVER ['PHP_SELF']的内容。)

...在同一个theme-options父目录中同时具有目录名theme-options.php和文件名back-end的情况下?

此外,$_SERVER['SCRIPT_NAME']的内容为/wordpress/wp-content/themes/bktf/frameworks/back-end/theme-options.php

为什么Apache或PHP模块会自动在目录名末尾添加.php,因为有一个与dir相同的脚本???

注意:我使用Apache和PHP的默认配置为Ubuntu 12LTS服务器,通过tasksel安装,然后使用https://launchpad.net/~ondrej/+archive/php5 PPA升级到PHP 5.4,所有配置文件大多与defaults / examples完全相同 - 它是一个基本的LAMP服务器,意味着在虚拟机中运行以用于开发目的。

4 个答案:

答案 0 :(得分:1)

PHP_SELF指的是在服务器上运行的文件,而不是当前的url。阅读PHP $ _SERVER手册以获取更多信息:http://php.net/manual/en/reserved.variables.server.php

请尝试使用$_SERVER['REQUEST_URI']。这将为您提供最后的查询字符串。

答案 1 :(得分:0)

PHP_SELF =当前正在执行的脚本的文件名,相对于文档根目录。 SCRIPT_NAME =当前脚本的路径。

答案 2 :(得分:0)

好吧,我的问题有点令人困惑,所以我能理解为什么每个人都回答了我提出的问题。

无论如何,在我的案例中发生的事情是没有theme-options dir (重命名并忘记)和Apache将/[...]/theme-options/[...]之类的请求转换为{{1}因为有一个/[...]/theme-options.php/[...] 脚本

我仍然不知道为什么使用所有默认配置的Ubuntu LAMP设置这个奇怪的路径杂耍,但我解决了我的直接问题。

答案 3 :(得分:0)

由于启用了MultiViews选项,Apache将请求转换为具有扩展名的特定文件:http://httpd.apache.org/docs/2.2/mod/mod_negotiation.html#multiviews