2015-02-07 55 views
2

我已將Symfony應用程序部署到one.com服務器。我寫了一個郵件服務,通過SwiftMailer發送我的郵件。Symfony2 - 未找到類XXX

現在,由於one.com不允許phar-extensions允許,作曲家無法通過ssh更新。於是,我產生的類映射本地與

composer update -o 

每當我試圖讓郵件服務,應用程序引發的錯誤:

Fatal error: Class 'Stocksolutions\ShopBundle\DependencyInjection\Mail' not found in /customers/4/b/b/stocksolutions.be/httpd.www/releases/20150204201140/app/cache/dev/appDevDebugProjectContainer.php on line 3602

我已經搜查了作曲家類映射和類未找到它在裏面:

'StockSolutions\\ShopBundle\\DependencyInjection\\Mail' => $baseDir . '/src/StockSolutions/ShopBundle/DependencyInjection/Mail.php' 

此外,我可以在容器中獲得其他服務,fe那些來自FOSUserBundle,但獲取我的自定義服務會引發錯誤。另外,在本地測試時,我不會得到這些錯誤..

任何想法?

+3

您不應該在生產服務器上進行更新,因爲這會拉出未測試的新版本。運行'composer install'並提交併將'composer.lock'文件部署到您的項目中。您的部署可以使用SSH從本地機器複製到遠程,並安裝所有依賴項和自動加載。如果它在本地工作,它應該遠程工作。 – Sven 2015-02-07 17:16:55

+0

當我不生成類圖時它不起作用。然後我在主頁上看到這個'Class not found'錯誤(帶有不同的類)。也許值得一提的是,應用程序位於子文件夾中,並通過htaccess文件引用。然後,類映射中類的路徑是正確的,並且文件已就位。因此,我無法真正包裝我的頭在此.. – 2015-02-07 19:23:43

+0

您是否嘗試在生成類圖後清除緩存?這會更新'appDevDebugProjectContainer.php',也許你的問題就會消失。 – 2015-02-08 17:22:37

回答

5

這是區分大小寫的問題。

你的錯誤:

Fatal error: Class 'Stocksolutions\ShopBundle\DependencyInjection\Mail' not found

小字符sStocksolutions命名空間PSR力量來搜索文件/src/Stock**s**olutions/ShopBundle/DependencyInjection/Mail.php,但存在/src/Stock**S**olutions/ShopBundle/DependencyInjection/Mail.php

在本地系統可能是Windows,其中路徑/文件名不區分大小寫,不會發生錯誤。

P.S.類名稱空間中的拼寫錯誤很可能在捆綁服務描述中(services.yml/services.xml)。

+0

謝謝soooo了。我無法理解這一點! – 2015-02-10 11:54:41