2012-03-06 50 views
1

我有一個Ubuntu 10.04服務器,運行PHP 5.3.2,我已經在我的php.ini文件中設置這些行:magic_quotes的不會消失

magic_quotes_gpc = Off 
magic_quotes_runtime = Off 
magic_quotes_sybase = Off 

有沒有其他的php.ini文件(我搜索了整個硬盤驅動器),我檢查了所有的apache2配置文件(包括整個硬盤上的所有.htaccess文件),並且其他地方都沒有引用

但是:

<?php 
    ini_set('display_errors', 1); 
    error_reporting(E_ALL); 
    var_dump(get_magic_quotes_gpc()); 
?> 

產生這樣的輸出:int(1)也就是說,魔術引號都在,這是通過將任何類型的帶引號的要求容易覈查,它們將被報出來。 我已通過添加以下到我的根.htaccess文件固定此:

php_flag magic_quotes_gpc Off 

上述代碼現在產生所期望的結果:int(0),並且沒有輸出被引用。

所以問題:爲什麼,親愛的上帝爲什麼,首先是魔術引號?是的,我知道這個問題是similar to others已被問及。我不是在尋找「快速修復」,是的,我知道魔術引號將被刪除在PHP 5.4。但事實是,在5.4出現後(不同的客戶端等),我需要維持向後兼容性幾年,所以我試圖弄清爲什麼魔術引號出現了。我知道我可以通過在我的根.htaccess文件中添加一行來解決這個問題(如我所示),但我更願意更好地理解我的php.ini設置如何在首位被覆蓋。

那麼,有沒有人有任何想法如何可以打開?

+0

我重置不僅阿帕奇,但重新啓動整個服務器(多次)。重置不會修復它。至於Debian/Ubuntu維護者,他們如何解決apache和php配置文件?你是說這是由操作系統處理的東西嗎?如果是這樣,爲什麼.htaccess文件繞過它,你能提供任何證據這就是發生了什麼? – cegfault 2012-03-06 09:25:51

回答

1

我終於明白了;更新apache2和php5:

apt-get update 
apt-get install apache2 php5 

這是apache2和/或php5中某些版本的錯誤。 Debian的apt世界中的版本已經更新,所以只需更新就可以解決問題。

0

在其輸出的頂部PHPinfo()告訴你實際使用的php.ini文件。

沒有其他的php.ini文件(我找遍了整個硬盤驅動器),我檢查了所有的Apache2配置文件(包括整個硬盤上的所有.htaccess文件),並且他們沒有其他地方引用。

也沒有魔法。
如果它被設置 - 它被設置在某處。

+0

加載配置文件:'/ etc/php5/apache2/php.ini',掃描該目錄以獲取其他.ini文件:'/ etc/php5/apache2/conf.d',附加.ini文件解析:'[.. ....]'檢查他們所有。只設置它的**位置在主要的'/ etc/php5/apache2/php.ini'文件中,我已經將它們全部設置爲'off'。 – cegfault 2012-03-06 09:24:59

+0

一個狂猜:可能是這個文件裏有一些包含嗎?或具有相同設置的多行?順便說一句,關於主值的說法是什麼? – 2012-03-06 09:39:14

+0

不包含在文件中,並且沒有多行具有相同的設置。至於主值,這很有趣:本地值顯示爲「off」,但主值爲「on」 - 是否意味着本地值被覆蓋? – cegfault 2012-03-06 09:41:03

1

今天我有這個相同的問題,發現這個問題,但沒有明顯的解決方案!

我終於也通過應用magic_quotes_gpc = Off線在/etc/php5/apache2/conf.d文件夾中的最後一個文件解決了這個問題,因此它似乎事情是覆蓋原來的php.ini文件,但應用的設置再次在最後包含的文件實際上變成magic_quotes再次退出。

+1

哇,男人謝謝soooooooooooooooooooo了!終於救了我的命!爲什麼,爲什麼這個愚蠢的錯誤。我搜索了所有......你的解決方案是唯一的解決方案!我的英雄!!!!謝謝! – systrue 2012-05-29 09:23:53

0

這爲我工作:

我改變:

; Magic quotes 
; 


; Use Sybase-style magic quotes (escape ' with '' instead of \'). 
    magic_quotes_sybase = 0 
    magic_quotes_gpc = 0 
    magic_quotes_runtime = 0 

到:

; Magic quotes 
; 


; Use Sybase-style magic quotes (escape ' with '' instead of \'). 
magic_quotes_sybase = 0 
magic_quotes_gpc = 0 
magic_quotes_runtime = 0 

只好空間設置之前,浪費數小時的時間magic_quotes的每個實例搜索出來,和每個php.ini文件或任何.ini文件。

(我這樣做是在drush.ini我.drush目錄,但它可能會在php.ini工作)