簡體   English   中英

$ _REQUEST ['url]為空。 如何從$ _REQUEST ['url']獲取控制器和方法? Bitnami WAMP

[英]$_REQUEST['url] is empty. How to get controller and methods from $_REQUEST['url']? Bitnami WAMP

(由於發現了答案和其他信息,此問題已被修改兩次。)

我需要從REQUEST獲取網址。 以下是index.php的示例,其中我嘗試打印請求,發布和獲取-所有這些都是空的。 我已經在使用Bitnami WAMP的計算機上和遠程服務器(Arvixe)中嘗試了此操作。 因為它在遠程服務器上不起作用,也許原因是在.htaccess中? REQUEST ['url']無法正常工作的其他原因是什么?

C:\\ Bitnami \\ wampstack-5.6.20-0 \\ apache2 \\ htdocs \\ www \\ Plan2own \\ public \\ 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]

例如,使用URL http://plan2own/index.php/home我得到以下結果,並且URL為空。

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 )在php.ini中注釋了auto_globals_jit並重新啟動apache並沒有幫助; (b)在我的情況下,php.ini中的request_oder和variable_order是正確的。

我正在檢查正確的php.ini文件,使用phpinfor()可以看到該文件; 在“已加載的配置文件”行中。

您的問題提到了auto_globals_jitrequire_order 確保php.ini variables_order設置為類似以下內容:

variables_order = "GPCS";

在該行上,除了此文本外,沒有任何其他內容。 一旦對php.ini進行了更改,請記住重新啟動PHP / Web服務器。

仔細檢查您是否在編輯正確的php.ini文件; 通常有幾個。 如果執行phpinfo();exit; 然后在輸出中查看Loaded configuration file中的路徑,它應與php.ini的路徑匹配

最后,設法獲取網址,以便使用示例中的示例提取控制器和方法參數

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(“ / Plan2own / public / index.php /”,“”,$ _SERVER ['REQUEST_URI']); 回聲'
index.php request = ',var_dump($ request),' ';

對於url http://www.domain.com/public/index.php/home/some結果為index.php request = **string(9) "home/some" **

ps我無法獲得$_REQUEST['url'] ,因為某種原因.htaccess命令RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]在Linux上無法正常工作Arvixe和Bitnami WAMP。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM