$ _REQUEST ['url]为空。如何从$ _REQUEST ['url']获取控制器和方法? Bitnami WAMP

时间:2016-07-24 08:54:48

标签: php apache .htaccess request

(由于我找到的答案和其他信息,这个问题被修改了两次。)

我需要从REQUEST获取网址。下面是index.php的示例,其中我尝试打印请求,发布和获取 - 所有这些都是空的。 我在我的计算机上用Bitnami WAMP和远程服务器(Arvixe)试过这个。因为它在远程服务器上不起作用,可能原因在于.htaccess?还有什么地方可能是REQUEST ['url']无效的原因?

C:\ Bitnami \ wampstack-5.6.20-0 \的Apache2 \ htdocs中\ WWW \ Plan2own \公共\的index.php

<?php
error_reporting(E_ALL);
//phpinfo();
echo'<br> index.php   _GET  = **', var_dump( $_GET  ), '**';  
echo'<br> index.php   _POST  = **', var_dump( $_POST  ), '**';  
echo'<br> index.php GLOBALS[_REQUEST]  = **', var_dump($GLOBALS['_REQUEST']) , '**'; 
echo'<br> index.php   _REQUEST  = **', var_dump( $_REQUEST  ), '**';  
echo'<br> index.php   _REQUEST[url]  = **', var_dump( $_REQUEST['url']  ), '**';
echo'<br> index.php   _GET[url]  = **', var_dump( $_GET['url']  ), '**';  
echo'<br> index.php   _POST[url]  = **', var_dump( $_POST['url']  ), '**'; 

C:\ Bitnami \ wampstack-5.6.20-0 \的Apache2 \ htdocs中\ WWW \ Plan2own \ public.htaccess

Options -MultiViews
Options -Indexes
RewriteEngine on
RewriteBase C:\Bitnami\wampstack-5.6.20-0/apache2/htdocs/www/Plan2own/public
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{ENV:REQUEST_FILENAME} !-d
RewriteCond %{ENV:REQUEST_FILENAME} !-f
RewriteCond %{ENV:REQUEST_FILENAME} !-l
RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]

例如,使用网址http://plan2own/index.php/home我得到以下结果和空网址。

index.php _GET = **array(0) { } **
index.php _POST = **array(0) { } **
index.php GLOBALS[_REQUEST] = **array(0) { } **
index.php _REQUEST = **array(0) { } **
index.php _REQUEST[url] = **NULL **
index.php _GET[url] = **NULL **
index.php _POST[url] = **NULL **

例如,使用网址http://plan2own/index.php?a=b我正在获取空网址

index.php _GET = **array(1) { ["a"]=> string(1) "b" } **
index.php _POST = **array(0) { } **
index.php GLOBALS[_REQUEST] = **array(1) { ["a"]=> string(1) "b" } **
index.php _REQUEST = **array(1) { ["a"]=> string(1) "b" } **
index.php _REQUEST[url] = **NULL **
index.php _GET[url] = **NULL **
index.php _POST[url] = **NULL **

我的想法是我应该从http://plan2own/index.php/home回家,即我应该得到控制器和方法。

我读了http://stackoverflow.com/questions/5701588/why-is-request-empty(a)在php.ini中注释掉auto_globals_jit并重新启动apache没有帮助; (b)php.ini中的request_oder和variable_order在我的情况下是正确的。

我正在检查正确的php.ini文件,我可以使用phpinfor()查看;在“已加载的配置文件”行中。

2 个答案:

答案 0 :(得分:1)

您的问题提及auto_globals_jitrequire_order。确保variables_order中的php.ini设置为:

variables_order = "GPCS";

该行上除此文本外应该没有任何内容。您已经对php.ini进行了更改,请记得重新启动PHP /网络服务器。

仔细检查您是否正在编辑正确的php.ini文件;经常有几个。如果您执行phpinfo();exit;并在输出中查看Loaded configuration file中的路径,则该路径应与php.ini

的路径匹配

答案 1 :(得分:0)

最后,设法获取url以使用

中的示例提取控制器和方法参数

http://code.tutsplus.com/tutorials/using-htaccess-files-for-pretty-urls--net-6049

1)在C:\ Bitnami \ wampstack-5.6.20-0 \ apache2 \ htdocs \ www \ Plan2own \ public.htaccess 将RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]更改为

RewriteRule ^(.*)$ index.php?/$1 [L]

2)将网址重定向到index.php,并且可以使用下面的代码对其进行分析。

// C:\ Bitnami \ wampstack-5.6.20-0 \ apache2 \ htdocs \ www \ Plan2own \ public \ index.php $ request = str_replace(&#34; /Plan2own/public/index.php /" ;,&#34;&#34;,$ _SERVER [&#39; REQUEST_URI&#39;]);  echo&#39;
index.php request = &#39;,var_dump($ request),&#39; &#39;;

对于网址http://www.domain.com/public/index.php/home/some,结果为index.php request = **string(9) "home/some" **

P.S。我无法获得$_REQUEST['url'],因为出于某种原因,.htaccess命令RewriteRule ^(.+)$ index.php?url=$1 [QSA,L](在Linux上运行)在Arvixe和Bitnami WAMP中无效。