Symfony2.5開發常見錯誤

        最近正在用Symfony2.5框架寫一個境外電子商務項目,搭配webseverse編寫相關接口;還好對方已經提供了相關接口,我只用寫前段接口就好,但是用Symfony2.5操作數據庫也是相當簡單的;我接觸過相當多人都覺得此框架難,分析了相關原因是它長得像Java一樣,mvc思想更加根深蒂固了;但有個好處是能與像Java這些語言匹敵了。話不多說,聊下今天要講的主題吧!

        在Symfony2.5編程過程中也遇到了不少錯誤,我以後就將我遇到的錯誤總結如下,供大家參考,希望能幫助大家快速開發。

        

        報錯:

   Oops! An Error Occurred   The server returned a "404 Not Found"....

        問題:一般爲服務器內部錯誤,你的後臺代碼編寫引發的問題。

        這裏有兩種情況:

    1.是頁面訪問時:比如Symfony路由寫錯,系統找不到,Symfony入口文件爲app_dev.php,大家可能輸的是http://localhost/Symfony/web/  ,更改爲http://localhost/Symfony/web/app_dev.php  ;更多安裝問題請參考:http://9670708.blog.51cto.com/9660708/1584872

    2.是服務器處理(如表單處理)時:服務器內部錯誤,可能服務器內部處理問題(如數據提交問題,原本數據庫要求爲Byte型,但你輸入超出長度)。


        報錯:

   Attempted to load  from the global namespace in E:\wamp\www\branches\dev\src\Ce\WebBundle\Model\AbstractModel.php line 53.

        問題:表單傳值(生成)規範與服務器數據集不和,Symfony框架可生成表單,在FROM目錄下,生成字段要與MODLE裏字段一致,可能一個字段不對編出現此錯誤。


        報錯:

   Parse Error: syntax error, unexpected '[' in D:\wamp\www\Symfony\src\site\BlogBundle\Controller\UserController.php line 29

        問題:提示有個“(” 或 “[” 不認識是因爲版本問題,php版本需要支持Symfony都至少5.3.0以上,需要支持“(” 或 “[”(來表示數組)的話,必須要php5.4+以上。

      

       報錯:

   FatalErrorException:Compile Error: Cannot use Ce\Webdle\Model\SearcngNumber as SearchExprekingNumber because the name is already in use in D:\wamp\www\Ce\WebBundle\Controller\OrController.phpline 61

        問題:model已經引入進來了,“use”出現重複,需要去掉一個“use”。


        報錯:

   格式化程序嘗試對消息反序列化時引發異常: 嘗試對參數 http://tempuri.org/ 進行反序列化時出錯: request。InnerException 消息是“反序列化對象 屬於類型 ZT.CE.DES.Service.Entities.GenerateExpressBillRequest 時出現錯誤。在行 2、位置 419 處出現錯誤。 不能將值“21312”作爲類型“Byte”來分析。”。有關詳細信息,請參見 InnerException。

        問題:提交數據字段格式(要求二維數組,但你是一維數組)或者數據(數據爲空了)與要求的數據不一致;打印出要提交的字段,看與要求字段有和差別,再更改,想辦法將字段更改爲要求的。


        報錯:

   No route found for "GET /demo/hello"  404 Not Found -NotFoundHttpException 1 linkedException:ResourceNotFoundException

       問題:原因是路由沒有找到你傳過來的GET值,一般是url 路由寫錯或者是沒有傳參數,比如原本的代碼:

            /**
             * @Route("/hello/{name}", name="_demo_hello")
             * @Template()
             */
            public function helloAction($name)
            {
                return array('name' => $name);
            }

        這裏/hello/{name} 看出,/hello/後還應該跟一個參數;

        上面報錯,發現hello後並沒有跟參數,改爲這樣就行了:http://localhost/web/app_dev.php/demo/hello/55


        報錯:

    ContextErrorException: Warning: file_get_contents(/Users/Paul/Sites/Project/htdocs/projectweb/vendor/symfony/symfony/src/Symfony/Bundle/TwigBundle/Resources/views/Exception/exception_full.html.twig): failed to open stream: No such file or directory in/var/www/projectweb/vendor/twig/twig/lib/Twig/Loader/Filesystem.php line 130

        問題:(找不到緩存文件)在命令行輸入,清空緩存即可:

       php app/console cache:clear


 

以下爲Symfony2.5+webseverse 報錯:

 

        報錯:

    Attempted to load class "SoapClient" from the global namespace in E:\wamp\www\branches\dev\src\Ce\WebBundle\Model\AbstractModel.php line 53. Did you forget a use statement for this class?

        問題:這句話是說不認識SoapClient,提示是否忘記聲明類了,原因是PHP默認不支持Soap,需要在php.ini裏開啓服務。


        報錯:

 SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://wdfd:8080/rpc/soap/jasoapservice-v2?wsdl' : failed to load external entity "http://wdfd:8080/resd/soap/jsoapservice-v2?wsdl"

        問題:這個錯可能是wdfd域名無法認識的原因,1.可能是你斷網了(但這種錯基本自己能解決);2.需要在win32  hosts文件裏添加這個域名解析;或者是因爲win32不支持PHPcurl等操作,需要把PHP中的相關文件複製在system32下(開啓相關板塊)。

 

        本章的許多問題都是給了大家一個提示,大家可以靠提示在百度,因爲直接百度Symfony什麼報錯是收不到的,原因是Symfony在國內不流行;但不得不說它是一個超越php其他框架的好東西。大家有問題可以留言。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章