目錄
鑰匙要點
config file
> SYMFONY應用程序首次在遠程服務器上運行時,它將在應用程序/CACH/PORD目錄中創建我們的應用程序的編譯版本。當我們的文件(尤其是我們的控制器和路由)更新時,我們需要刷新緩存,或者輸出可能不正確,並且通常會導致500個錯誤。
謹慎使用它,只有在絕對必要的情況下!
結論
什麼是Symfony 2,為什麼我應該將其用於我的Web開發項目?
Symfony 2是用於開發Web應用程序的高性能PHP框架。它以速度,靈活性和可重複使用的組件而聞名。它允許開發人員有效地構建強大的應用程序。該框架遵循MVC(模型視圖控制器)設計模式,這使得管理代碼庫更容易,並促進可擴展應用程序的開發。 Symfony 2還具有一個充滿活力的社區,可提供出色的支持並為其廣泛的捆綁圖書館做出貢獻。
> Symfony 2的關鍵功能是什麼? >
2可以使用Composer完成對較新版本的應用程序。首先,您需要在項目中更新“ composer.json”文件,以指定要使用的新版本的Symfony。之後,您可以運行“作曲家更新”命令來更新您的應用程序。升級後徹底測試您的應用程序很重要,以確保一切正常工作。其他軟件中的插件。它們是包裝和分發Symfony 2代碼的一種方式。它們可以包含庫,模板,控制器,配置中的任何內容 - 本質上是可以執行的任何PHP代碼。您可以使用Symfony社區提供的捆綁包或創建自己的捆綁包。要使用捆綁包,您需要下載它,在'appkernel.php'文件中啟用它,並在必要時進行配置。
如何在Symfony 2中管理用戶身份驗證和授權?和授權。您可以配置不同的身份驗證方法,例如形式登錄,HTTP基本身份驗證或OAuth。為了授權,Symfony 2提供了靈活的“訪問控制列表”(ACL)系統,該系統允許您為用戶定義細粒度的權限。
>如何優化Symfony 2應用程序的性能?
首頁 後端開發 php教程 Symfony 2用於開發和部署的清單

Symfony 2用於開發和部署的清單

Feb 21, 2025 am 10:34 AM

Symfony 2用於開發和部署的清單

鑰匙要點

  • 在開始開發過程之前,要測試生產服務器的兼容性至關重要,以避免潛在的問題,例如丟失的庫或應用程序所依賴的不變的全局設置。
  • 服務器準備,版本控制,遠程開發模式,緩存更新和錯誤頁面自定義是在Symfony 2應用程序部署過程中要考慮的一些關鍵方面。
  • 使用Git進行版本控制可以幫助在開發過程中對遠程站點進行本地更改。每次更新應用程序以避免錯誤時清除緩存也很重要。 >
  • >自定義Symfony 2應用程序的錯誤頁面可以提供更量身定制的用戶體驗。但是,這些頁面不支持Twig模板擴展名,因此必須從頭開始設計。 >
  • 在我的建築物中,我的個人網絡應用程序與Symfony 2系列發佈在SitePoint上的腳趾,我介紹了引導,開發和完成(在一些高級技術上)的一些基礎知識,以使用Symfony 2來開發Web應用程序。但是,由於該系列的長度限制,我們在“最終”步驟中沒有涵蓋太多:將Symfony 2應用程序部署到生產環境中。
  • 當我們進行開發時,我們很可能處於“根”角色;但是在生產環境中,我們可能被剝奪了這種特權。另外,設置可能不同。為了使情況變得更糟,有時我們無法像在自己的機器中那樣更改這些設置。
  • > 因此,在我們自己的服務器中進行任何實際開發之前,檢查我們的生產服務器的“兼容性”非常重要。這將避免這種可怕的情況,例如:Symfony依賴的庫缺失,該應用程序所依賴的某些全局設置不變,等等。
>測試生產服務器的“兼容性”確實應該是我們一開始就做的事情。在部署期間還有其他一些方面要解決 - 例如用於各種錯誤消息的模板等。

> 在以下各節中,我們將假設您對生產服務器沒有完全控制。如果這樣做,大多數兼容性問題可能不適用,因為您應該可以輕鬆地自己解決它們。

>生產服務器上的空物框架

>請按照我在Symfony 2上的第一篇文章中的說明進行說明,以在Production Server上設置一個空的Symfony框架。

>這對於測試服務器是否已啟用捲曲也很有用,不僅安裝在服務器上,而且作為PHP擴展名,確保我們可以獲取外部資源。在我的特殊情況下,這非常重要 - composer.org在我的國家被阻止,我需要使用代理來獲取和安裝Symfony框架。 >

>以後可以將此空框架檢查到版本控件中。

config file

Symfony 2附帶一個config.php文件,該文件位於Web目錄中。這是測試大多數“準備就緒”問題的腳本。要訪問該頁面,我們需要對其進行一些調整:

<span><span><?php
</span></span><span>
</span><span><span>if (!isset($_SERVER['HTTP_HOST'])) {
</span></span><span>    <span>exit('This script cannot be run from the CLI. Run it from a browser.');
</span></span><span><span>}
</span></span><span>
</span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
</span></span><span>    <span>'127.0.0.1',
</span></span><span>    <span>'::1',
</span></span><span><span>))) {
</span></span><span>    <span>header('HTTP/1.0 403 Forbidden');
</span></span><span>    <span>exit('This script is only accessible from localhost.');
</span></span><span><span>}
</span></span><span><span>...</span></span>
登入後複製
登入後複製
這個文件僅是從本地瀏覽器調用的。如果塊,我們需要評論第二個,以便我們可以遠程訪問它。

我的服務器已正確配置,沒有任何關鍵問題:>

Symfony 2用於開發和部署的清單此文件測試了我在下表中總結的準備問題。實際測試是在App/SymfonyRequirentess.php中完成的,因此我們還可以查看該文件。

設置/模塊 要求 嚴重性 >動作 PHP版本 = 5.3.3 需要但不得是5.3.16 升級到最新版本。建議至少使用PHP 5.4.8及以上。 供應商庫 由composer.phar安裝 必需的 使用composer.phar更新 緩存,日誌目錄 可寫 必需的 通過發行CHMOD授予許可。通常,特權應為755或777。 時區 類似“亞洲/上海”或您的時區 必需的 更改php.ini。 json_encode,session_start,ctype_alpha,token_get_all,simplexml_import_dom 啟用 必需的 啟用各自的PHP庫。大多數PHP服務器都啟用了這些。 APC 啟用/禁用 如果使用APC,請啟用 啟用APC或禁用APC(如果使用另一個緩存/加速器)。 xdebug 各種設置 需要,建議 相應地更改Xdebug設置。 domdocument,mb_strlen,iCony,utf8_decode,intl等 各種模塊 受到推崇的 啟用,如果您願意。 加速器 各種設置 受到推崇的 根據您的要求安裝和啟用。 >“必需”的嚴重程度意味著我們必須更改服務器設置以滿足要求。否則,Symfony 2將不會運行,因此不應該是我們應用程序開發的正確選擇。可以安全地忽略“推薦”項目,但我確實建議我們盡可能地滿足這些建議。在我的情況下(如上所述),我的生產服務器只有一個警告。這為進一步發展建立了堅實而可靠的基礎。

使用git同步文件

在開發過程中,您可以使用版本控件將文件複製到遠程站點的本地更改。在這種情況下,適當的.gitignore(或其他版本控制系統中的等效物)將變得方便。我的.gitignore文件的以下摘錄是用於參考:>

這絕不是詳盡或適合的列表。例如,如果您使用phpstorm,但不使用Netbeans,則可以刪除NetBeans部分,並用適合PhpStorm的過濾器替換:
<span><span><?php
</span></span><span>
</span><span><span>if (!isset($_SERVER['HTTP_HOST'])) {
</span></span><span>    <span>exit('This script cannot be run from the CLI. Run it from a browser.');
</span></span><span><span>}
</span></span><span>
</span><span><span>if (!in_array(@$_SERVER['REMOTE_ADDR'], array(
</span></span><span>    <span>'127.0.0.1',
</span></span><span>    <span>'::1',
</span></span><span><span>))) {
</span></span><span>    <span>header('HTTP/1.0 403 Forbidden');
</span></span><span>    <span>exit('This script is only accessible from localhost.');
</span></span><span><span>}
</span></span><span><span>...</span></span>
登入後複製
登入後複製

或只是將它們都放在其中,因此您會自動容納可能使用其他IDE的其他開發人員。建議始終包含前3節(作曲家,Symfony,Logs)。
<span># Composer
</span><span>vendor
</span><span>vendor/*
</span><span>!public/assets/js/vendor
</span><span>!public/assets/js/vendor/*
</span><span>!public/assets/css/vendor
</span><span>!public/assets/css/vendor/*
</span><span>composer.phar
</span><span>composer.lock
</span><span>
</span><span># Symfony
</span><span>app/cache/*
</span><span>app/logs/*
</span><span>
</span><span># Logs
</span><span>error.log
</span><span>access.log
</span><span>
</span><span># Netbeans
</span><span>nbproject
</span><span>.nbproject
</span><span>.nbproject/*
</span><span>nbproject/*
</span><span>nbproject/private/
</span><span>build/
</span><span>nbbuild/
</span><span>dist/
</span><span>nbdist/
</span><span>nbactions.xml
</span><span>nb-configuration.xml</span>
登入後複製

>清除緩存

> SYMFONY應用程序首次在遠程服務器上運行時,它將在應用程序/CACH/PORD目錄中創建我們的應用程序的編譯版本。當我們的文件(尤其是我們的控制器和路由)更新時,我們需要刷新緩存,或者輸出可能不正確,並且通常會導致500個錯誤。

要清除緩存,我通常會ssh到我的生產服務器,並在App Directory下執行RM -RF緩存命令。控制台緩存:清除或控制台緩存:熱身命令可能不是最乾淨的方法。

遠程開發模式

謹慎使用它,只有在絕對必要的情況下!

> 在某些情況下,當本地功能網站部署到生產服務器時,本地功能網站可能會崩潰。引起這一點的原因可能很複雜,並且與編碼過程本身無關。在這種情況下,我們可以考慮啟用遠程開發模式。

為此,我們採用類似的方法來通過評論App_dev.php中的以下代碼塊禁用Local -Host檢查

然後,我們可以訪問域和頁面,並以http://rsywx_remote/app_dev.php之類的內容進行訪問。當出現問題時,此開發模式將顯示更有用的調試信息,並可以幫助我們找到一些根深蒂固的問題。要在此調試期內增加安全性,請添加一張僅允許從您自己的IP訪問到上面文件的檢查 - 這將使其他所有人都保持開發模式。大多數問題將與數據庫設置有關(錯誤的數據庫和/或憑據),錯誤的API URI(本地和遠程URIS可能不同),過時的緩存,缺少本地使用但未遠程啟用的庫等。

解決問題後,請記住要解開這些行以恢復完整的訪問控制。普通用戶只能被允許使用app.php作為我們的應用程序的輸入點。

自定義錯誤頁面
<span># IntelliJ - PhpStorm and PyCharm
</span><span>.idea
</span><span>.idea/
</span><span>.idea/*
</span><span>*.iml
</span><span>*.ipr
</span><span>*.iws </span>
登入後複製
Symfony 2的默認樹枝模板引擎確實提供了一些錯誤頁面(404、500等)。但是這些頁面的設計通常不符合我們的應用。官方網站對如何執行此操作有詳細的解釋。我們可以根據自己的佈局和主題來開發自己的錯誤頁面。

>我們可以自定義錯誤頁面,並將它們放在應用程序/資源/twigbundle/views/exception下。可以將文件命名為404錯誤,error403.html.twig的文件error404.html。

>重要的是要注意,在Symfony 2中,錯誤消息頁面不支持TWIG模板擴展。這意味著我們無法從為其他頁面設計的現有佈局擴展到錯誤頁面。我們必須從頭開始設計錯誤頁面。這有點不方便,但仍然值得一個嚴肅的網站。

結論

在本文中,我們介紹了一些與Symfony部署相關的主題:服務器準備,版本控制,遠程開發模式,緩存更新,錯誤頁面自定義等。

> 部署通常是我們發展的最後一步。我希望這篇文章能幫助您避免一些常見的pitfals,並使您的部署過程更加順利。

>如果您覺得它很有趣或有用,請重新檢查本文,如果您有反饋,請在下面發表評論,非常感謝!

>!

經常詢問有關Symfony 2開發和部署的問題

什麼是Symfony 2,為什麼我應該將其用於我的Web開發項目?

Symfony 2是用於開發Web應用程序的高性能PHP框架。它以速度,靈活性和可重複使用的組件而聞名。它允許開發人員有效地構建強大的應用程序。該框架遵循MVC(模型視圖控制器)設計模式,這使得管理代碼庫更容易,並促進可擴展應用程序的開發。 Symfony 2還具有一個充滿活力的社區,可提供出色的支持並為其廣泛的捆綁圖書館做出貢獻。

>如何在本地機器上安裝Symfony 2?涉及幾個步驟。首先,您需要確保安裝了PHP。 Symfony 2需要PHP 5.3.9或更高。安裝了PHP後,您可以使用PHP的依賴關係管理工具來安裝Symfony。您可以從其官方網站下載作曲家。安裝作曲家後,您可以通過運行命令的“ Create-Project Symfony/Framework-standard-edition my_project_name”。

> Symfony 2的關鍵功能是什麼? >

Symfony 2具有許多功能,使其成為Web開發的強大工具。其中一些功能包括其可重複使用的組件,可以在多個項目中使用,其對MVC設計模式的支持,可促進清潔和可維護的代碼以及將其用於數據庫抽象的學說ORM。 Symfony 2還具有強大的安全組件,可為您的應用程序提供全面的安全系統。

>如何部署Symfony 2應用程序?

>如何將我的Symfony 2應用程序升級到較新版本?

2可以使用Composer完成對較新版本的應用程序。首先,您需要在項目中更新“ composer.json”文件,以指定要使用的新版本的Symfony。之後,您可以運行“作曲家更新”命令來更新您的應用程序。升級後徹底測試您的應用程序很重要,以確保一切正常工作。其他軟件中的插件。它們是包裝和分發Symfony 2代碼的一種方式。它們可以包含庫,模板,控制器,配置中的任何內容 - 本質上是可以執行的任何PHP代碼。您可以使用Symfony社區提供的捆綁包或創建自己的捆綁包。要使用捆綁包,您需要下載它,在'appkernel.php'文件中啟用它,並在必要時進行配置。

>如何處理Symfony 2? > Symfony 2提供了一種強大而靈活的方法來處理錯誤和異常。它帶有內置的“調試”組件,該組件在開發過程中提供詳細的錯誤消息。在生產環境中,Symfony 2捕獲了所有例外,並將它們轉換為“響應”對象。您可以通過在'app/resource/twigbundle/twigbundle/views/extescondory中創建模板來自定義錯誤頁面。一個“表單”組件,可輕鬆創建和管理表單。您可以通過創建“ formType”類並以形式定義字段來創建表單。創建表單後,您可以處理控制器中的表單提交。 Symfony 2還提供了一種使用驗證約束來驗證表單數據的方法。

如何在Symfony 2中管理用戶身份驗證和授權?和授權。您可以配置不同的身份驗證方法,例如形式登錄,HTTP基本身份驗證或OAuth。為了授權,Symfony 2提供了靈活的“訪問控制列表”(ACL)系統,該系統允許您為用戶定義細粒度的權限。

>如何優化Symfony 2應用程序的性能?

>有幾種方法可以優化Symfony 2應用程序的性能。其中一些包括使用“產品”環境進行生產,使APC PHP擴展用於OpCode緩存,使用作曲家優化自動加載器,並使用“ HTTPCACHE”類使用“ HTTPCACHE”類將HTTP緩存標頭添加到您的響應中。

以上是Symfony 2用於開發和部署的清單的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1663
14
CakePHP 教程
1420
52
Laravel 教程
1313
25
PHP教程
1266
29
C# 教程
1239
24
說明PHP中的不同錯誤類型(注意,警告,致命錯誤,解析錯誤)。 說明PHP中的不同錯誤類型(注意,警告,致命錯誤,解析錯誤)。 Apr 08, 2025 am 12:03 AM

PHP中有四種主要錯誤類型:1.Notice:最輕微,不會中斷程序,如訪問未定義變量;2.Warning:比Notice嚴重,不會終止程序,如包含不存在文件;3.FatalError:最嚴重,會終止程序,如調用不存在函數;4.ParseError:語法錯誤,會阻止程序執行,如忘記添加結束標籤。

PHP和Python:比較兩種流行的編程語言 PHP和Python:比較兩種流行的編程語言 Apr 14, 2025 am 12:13 AM

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? 說明PHP中的安全密碼散列(例如,password_hash,password_verify)。為什麼不使用MD5或SHA1? Apr 17, 2025 am 12:06 AM

在PHP中,應使用password_hash和password_verify函數實現安全的密碼哈希處理,不應使用MD5或SHA1。1)password_hash生成包含鹽值的哈希,增強安全性。 2)password_verify驗證密碼,通過比較哈希值確保安全。 3)MD5和SHA1易受攻擊且缺乏鹽值,不適合現代密碼安全。

PHP行動:現實世界中的示例和應用程序 PHP行動:現實世界中的示例和應用程序 Apr 14, 2025 am 12:19 AM

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

什麼是HTTP請求方法(獲取,發布,放置,刪除等),何時應該使用? 什麼是HTTP請求方法(獲取,發布,放置,刪除等),何時應該使用? Apr 09, 2025 am 12:09 AM

HTTP請求方法包括GET、POST、PUT和DELETE,分別用於獲取、提交、更新和刪除資源。 1.GET方法用於獲取資源,適用於讀取操作。 2.POST方法用於提交數據,常用於創建新資源。 3.PUT方法用於更新資源,適用於完整更新。 4.DELETE方法用於刪除資源,適用於刪除操作。

PHP:網絡開發的關鍵語言 PHP:網絡開發的關鍵語言 Apr 13, 2025 am 12:08 AM

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

解釋self ::,parent ::和static :: in php oop中的區別。 解釋self ::,parent ::和static :: in php oop中的區別。 Apr 09, 2025 am 12:04 AM

在PHPOOP中,self::引用當前類,parent::引用父類,static::用於晚靜態綁定。 1.self::用於靜態方法和常量調用,但不支持晚靜態綁定。 2.parent::用於子類調用父類方法,無法訪問私有方法。 3.static::支持晚靜態綁定,適用於繼承和多態,但可能影響代碼可讀性。

PHP如何安全地上載文件? PHP如何安全地上載文件? Apr 10, 2025 am 09:37 AM

PHP通過$\_FILES變量處理文件上傳,確保安全性的方法包括:1.檢查上傳錯誤,2.驗證文件類型和大小,3.防止文件覆蓋,4.移動文件到永久存儲位置。

See all articles