(由于我找到的答案和其他信息,这个问题被修改了两次。)
我需要从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()查看;在“已加载的配置文件”行中。
答案 0 :(得分:1)
您的问题提及auto_globals_jit
和require_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中无效。