2016-07-24 27 views
0

(此問題已修改兩次,因爲我找到的答案和其他信息。)

我需要從REQUEST獲取URL。下面是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我得到以下結果和空網址。

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 ** 

例如,使用URL 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();在「Loaded Configuration File」行中。

回答

1

您的問題提及auto_globals_jitrequire_order。在php.ini確保variables_order設置爲一樣的東西:

variables_order = "GPCS"; 

應該有除了在該行這段文字沒有。如果您對php.ini進行了更改,請記住重新啓動PHP/Web服務器。

仔細檢查您是否正在編輯php.ini文件;通常有幾個。如果您執行phpinfo();exit;,並在輸出看看在Loaded configuration file路徑,它應該符合您php.ini

+0

'request_order'和'variables_order'已啓用且正確。我正在檢查正確的'\ C:\ Bitnami \ wampstack-5.6.20-0 \ php \ php.ini',如果我在'index.php'中取消註釋'phpinfo();',則會加載該文件。不明白哪裏可能是錯誤。它可以在'.htaccess'中嗎? – olga

+0

我在嘗試BeetleJuice答案後更新了問題 – olga

0

Finaly的路徑,設法網址,以使用例如從

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)將url重定向到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']); echo'
index.php request = ',var_dump($ request),'';

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

附:我無法獲得$_REQUEST['url'],因爲出於某種原因,.htaccess命令RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]正在使用Linux,因此無法在Arvixe和Bitnami WAMP中使用。