2014-01-06 123 views
0

我有一個腳本,曾經工作。現在,我已經上傳它,它回答:非常奇怪的錯誤代碼

[06-Jan-2014 13:23:52 UTC] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 130968 bytes) in /home/statsaff/public_html/customforthisdomain.php on line 165 
[06-Jan-2014 13:23:53 UTC] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 130968 bytes) in /home/statsaff/public_html/customforthisdomain.php on line 165 
[06-Jan-2014 13:23:54 UTC] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 130968 bytes) in /home/statsaff/public_html/customforthisdomain.php on line 165 
[06-Jan-2014 13:25:08 UTC] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 130968 bytes) in /home/statsaff/public_html/customforthisdomain.php on line 165 
[06-Jan-2014 13:25:29 UTC] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 130968 bytes) in /home/statsaff/public_html/customforthisdomain.php on line 165 
[06-Jan-2014 13:26:05 UTC] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 130968 bytes) in /home/statsaff/public_html/customforthisdomain.php on line 165 
[06-Jan-2014 13:26:08 UTC] PHP Fatal error: Allowed memory size of 33554432 bytes exhausted (tried to allocate 130968 bytes) in /home/statsaff/public_html/customforthisdomain.php on line 165 

經進一步調查,我發現:

  1. 錯誤是完全一樣的,不管我怎麼修改customforthisdomain.php
  2. 事實上,我已經安排腳本中的第165行爲空
  3. 該錯誤僅在Firefox上顯示。腳本在Internet Explorer上運行良好。

這是圍繞行165碼,裏面是空的

function mainURL() 
{ 
    $domain=getDomain(); 

    $dictionary=getDomainDictionary(); 
    return $dictionary[MAINURL]; 
} 

//.. 

function getDomainDictionary() 

165線是空的空間內。

是什麼驅使我堅果是錯誤的表示,線165不過的事情發生,有上線165 NOTHING無論我如何更改錯誤信息口口聲聲說,它發生在行腳本165

我將文件分成2個文件。然後我開始將代碼從一個文件移動到另一個文件。

的罪魁禍首似乎是在這一行

function getDomain() 
{ 
    $domain=$_SERVER['SERVER_NAME']; 
    $domain = str_replace("www.", "", $domain); 

    /*if ($_GET['asdomain']) 
    { 
     $domain=$_GET['asdomain']; 
    }*/ 
    return $domain; 
} 

如果我取消了註釋行,則錯誤是在customdomain1.php。如果我評論它,錯誤是在getcountryotherway.php

罪魁禍首行總是165.儘管事實上文件甚至不包含165行。

+0

在php.ini中調整memory_limit – user1844933

+0

腳本是做什麼的? – putvande

+1

從技術上講,你應該使用哪種瀏覽器並不重要;你應該發佈一些代碼,我們可以從這裏告訴的是:**它的內存不足** – MackieeE

回答

0

該錯誤的可能原因:

  • 腳本佔用內存過多
  • 錯誤/無限循環一樣,同時,的foreach,爲
  • 緩存文件可能會導致過多

如果你不能改變你的服務器的php配置,你必須分析你的代碼並做一些改進。

由於服務器的配置,瀏覽器不應該給出問題。也許清除緩存並重試?

0

更新PHP.ini或使用init_set更改限制。

ini_set("memory_limit","12M"); 

12Mo是限制。

1

有兩種方法搞砸在這裏。首先是緩存配置錯誤。在SilverStripe安裝中,silverstripe-cache必須存在。這個網站非常相關。

www.meerware.com/thoughts/2013/07/choose-your-silverstripe-cache-location-carefully/

你的PHP可能有不同的緩存,但緩存沒有被寫入導致無限的內存消耗。

此外,如果selinux或權限問題阻止緩存位置可寫,則可能會出現同樣的問題。

0

我想出了這個問題。一些函數保持遞歸調用彼此。我已經解決了這個問題。不知道爲什麼它總是說錯誤在第165行.165行沒有任何內容。這是非常容易讓人誤解的。