2017-03-14 23 views
1

這是我在同一臺機器上運行的第二個laravel項目。第一個作品很好。第二個laravel項目(v5.4)PHP致命錯誤:允許的內存大小134217728字節耗盡(試圖分配262144字節)

我使用xampp作爲項目。

我安裝另一個全新的版本(5.4)laravel,當我運行

artisan serve

後phpstorm告訴我

PHP Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) in E:\xampp\htdocs*****\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 549

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) in E:\xampp\htdocs*****\vendor\laravel\framework\src\Illuminate\Container\Container.php on line 549

Process finished with exit code 255 at 13:58:28. Execution time: 4,976 ms.

我試圖other post這一點,並試圖改變php.ini文件。它不適用於我的情況。

+0

在網絡瀏覽器中運行它是否會產生相同的錯誤? – MonkeyZeus

回答

-3

這聽起來不像服務器安裝問題。這是一個Laravel設置問題。在php.ini中增加memory_limit不會解決您的問題。如果安裝不正確,Laravel通常會丟失無用的錯誤。

在運行composer之後,請確保在嘗試運行php artisan serve之前已完成以下操作。

  1. 根指向/public文件夾
  2. 運行作曲家安裝。您可能會缺少一些供應商文件夾
  3. /storage的權限爲777/storage/logs/laravel.log < - 在這裏你會發現你的真實錯誤。
  4. 確保創建.env又名的.env.example
  5. 副本生成密鑰php artisan key:generate

另外要注意的是你沒有任何空格在.env文件創建變量時,這會導致問題好。

  • DB_DATABASE=my database name
  • DB_DATABASE=my_database_name

最後,如果你像MAMP運行的東西,你可能要包括像這樣在你的.ENV文件UNIX_SOCKET變量:

DB_CONNECTION=mysql 
DB_HOST=127.0.0.1 
DB_PORT=3306 
DB_DATABASE=your_database_name_here 
DB_USERNAME=root 
DB_PASSWORD=root 
UNIX_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock 

並在/config/database.php文件中創建變量

'mysql' => [ 
    'driver' => 'mysql', 
    ... 
    'engine' => null, 
    'unix_socket' => env('UNIX_SOCKET','') 
], 
+0

謝謝@ user3029357。你爲此得到了正確的方向。看起來像託管設置有問題。 – user228

+0

@ user228如果您覺得這有幫助,您可以投票嗎? – BlueYama

+0

目前人們正在投票,請解釋一下?我相信它是因爲他們認爲它是一個服務器設置問題。這是一個Laravel問題。在php.ini中增加'memory_limit'不會解決這個問題。這是Laravel未正確設置時引發的常見錯誤。 – BlueYama

0

您的代碼中必須有某種錯誤 - 例如循環參考或其他錯誤。調用php artisan serve肯定不應該使用130+ MB內存。

修正錯誤,然後再試一次...... php artisan serve應該使用20mb的最大值?

如果你真的想運行代碼,然後嘗試php -d memory_limit=500M artisan serve這將增加可用於該特定進程的PHP的MEM。

+0

謝謝你的努力。但是,正如我所說的,我確實嘗試增加了php.ini文件中的memory_limit,該文件不適用於我的情況。 – user228

0

你能解釋一下你的項目是什麼嗎?

我問這是因爲該錯誤直接與單個PHP腳本試圖在內存中加載的內容相關,即:加載模型或文件,並且結果對象使用的內存數量超過php.ini下每個腳本允許的內存組態。

看着這個錯誤,你的php.ini被設置爲最大腳本內存使用量爲128Mb(134217728字節/ 1024 Kb/1024 Mb),無論加載是否試圖加載額外的256Kb。

我建議兩件事

  1. 檢查php.ini確認您的內存限制(memory_limit = ?
  2. 提供完整的堆棧跟蹤,這樣我們就可以幫您診斷(我猜容器試圖從數據庫加載模型,並且數據大小相當大,加載時,它超過極限穩定
+0

該項目是我從laravel服務器下載的乾淨的laravel。就像我說的,我試圖改變php.ini中的memory_limit,但它不起作用。另外,我發佈的都是我獲得的完整堆棧跟蹤。是的,沒有別的。 – user228

+0

雖然我想到其他的選擇,但我還有一個問題。如果將內存限制設置爲256Mb,那麼在重新啓動Apache之後,是否會拋出相同的錯誤(相同的字節數)? (_如果是這樣,那麼你正在修改的php.ini不是由應用程序讀取的_)(_這可能是XAMPP配置的一個副作用) – AlphaZygma

相關問題