$ _SERVER ['PHP_SELF']错误链接,双链接

时间:2012-09-18 12:52:24

标签: php self

$_SERVER['PHP_SELF']提供了错误的链接,因此某些脚本无法正常工作

例如,我将以下代码放在文件test.php中:

<?
echo $_SERVER[PHP_SELF];
echo "<br>" ;
echo $_SERVER['PHP_SELF'];
?>

在根文件夹中,如www.site.ru/test.php,我看到:

/test.php/test.php
/test.php/test.php

一定只是/test.php ......为什么会这样?

Php版本:

php.i686 0:5.3.16-9
php-cli.i686 0:5.3.16-9 
php-common.i686 0:5.3.16-9
php-devel.i686 0:5.3.16-9
php-fpm.i686 0:5.3.16-9
php-pdo.i686 0:5.3.16-9
php-sqlite.i686 0:5.3.16-9
php-xml.i686 0:5.3.16-9
php-mysql.i686 0:5.3.16-9
php-mcrypt.i686 0:5.3.16-9
php-mbstring.i686 0:5.3.16-9
php-intl.i686 0:5.3.16-9
php-gd.i686 0:5.3.16-9 

1 个答案:

答案 0 :(得分:1)

<强> cgi.fix-PATHINFO

我遇到了同样的问题,经过大量的搜索后发现我的问题的解决方案对你也很有帮助

我使用带有PHP-FPM的PHP 5.6.29的nginx / 1.10.2

var_dump($_SERVER["PHP_SELF"]); = 'string(32)"/test/index3.php/test/index3.php"'

修复,编辑php.ini cgi.fix_pathinfo确保其等于0

cgi.fix_pathinfo为CGI提供真正的 PATH_INFO / PATH_TRANSLATED支持。 PHP的 以前的行为是将PATH_TRANSLATED设置为SCRIPT_FILENAME,而不是grok PATH_INFO是什么。有关PATH_INFO的更多信息,请参阅cgi规范。设置 这将导致PHP CGI修复其路径以符合规范。一个设置 为零会导致PHP像以前一样运行。默认值为1.您应修复脚本 使用SCRIPT_FILENAME而不是PATH_TRANSLATED。 http://php.net/cgi.fix-pathinfo

cgi.fix_pathinfo=0

解决问题后

应该重启nginx和php-fpm

var_dump($_SERVER["PHP_SELF"]); = 'string(16) "/test/index3.php"'

相关问题