`
zhangyouzhi
  • 浏览: 19397 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

PHP 開發工具三部曲 Episode II – Zend Server [ 500 error 事件簿 ]

 
阅读更多

PHP 開發工具三部曲 Episode II – Zend Server [ 500 error 事件簿 ]

如果要開發 web .net 就需要安裝 IIS + .NET Framework,如果要開發 JSP 就要安裝 apache + tomcat,如果要開發 PHP 那就一定要安裝 apache + php 了,不過一般應用程式開發還會包含 mysql ,因此整合好套裝包的 php 執行環境就很多種,包含有手動安裝 Apache+php+mysql ,或是選擇 MAMP / Appserv / XAMPP 等等等,不過這都是執行環境,並不算是開發環境,因此我們需要 Zend Server,來看看他可以協助我們什麼吧。

image 2010/05 Zend Server 以開發到 5.0 的版本,如果只需要執行環境也可以裝 CE 版本

相信很多開發 php 的朋友,尤其是使用 notepad++ 的朋友,對於程式開的 DEBUG 方法一定很習慣事先將會需要的變數分類,在將所有的變數分開存於陣列中,當需要知道變數目前的資料時,在用 DUMP 的方式將資料印在畫面上,如果是運算中發生的錯誤,例如是 print $a+$b*$c ; 這段運算式,如果不管怎麼樣結果都不如我們預期的資料,以往的作法一定是把 $a , $b , $c 三個變數印出來,在看看是否正確,這種我們稱為執行期錯誤,如果只是如範例的三個函數那還好,如果是迴圈內的的變數,或是想要知道各變數目前的值,像這種瞎子摸象的 Debug 方式你厭煩了嘛。

趕快來把 Zend Server 裝起來吧,很不幸的,Zend Server 是老外開發的,很不幸的,在非英文語系的 win os 下安裝好,預設是不可以用的,他會出現 500 錯誤碼,後面我們會提到如何解決。

注意!本篇圖很多因此如果放大圖片的時候會需要等待較長時間。

STEP 1 :

Zend 官方網站下載最新版的 Zend server 5.0

CE 版本為社群版本,免費,但是無法使用 debug 功能也無法接受支援

跟安裝 appserv 是相同意思,不過 zend 公司是 php 維護的主要公司之一。

STEP 2 :

執行安裝檔案

因為我們要順便一起安裝 phpmyadmin 與 mysql 以及其他套件,因此呢我們要選擇 Custom 安裝

image

接下來我們把想要一起安裝,我是比較貪心把可以打勾的通通都打勾啦 (建議不要太貪心喔,因為附加安裝的軟體通通都要另外在下載的)

image

我希望把安裝路徑修改一下,我把它安裝在 C:/Zend 底下

image

因為沒有特殊要求因此 port 就不更改了

image

等了很久終於裝好了(太貪心了,全部都裝),兩個都打勾按下確定就裝好了

image

STEP 3 :

詭異的 Zend Server 500 Internal Server Error 錯誤事件簿

當你很開心的安裝好 Zend server 後,瀏覽器應該也會很挺你的開出 http://localhost:10081/ZendServer/ 這個網站,但是,看來 Zend Server 並不這樣想 ( 我猜他大概沒看過 艋舺 吧~ 意義是啥小,我只知道意氣啦!!~ ),很不講理的吐了一串錯誤訊息

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, admin@example.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

image

因為這個錯誤訊息導致我花了大概四五天的時間都沒辦法把 Zend server 架起來,而且翻了很多技術文章,也沒有提到這個問題,最後是在 Zend Form 找到這個官方的 bug 提示。不過後來我在這位前輩的部落格中看到也有提到同樣的問題,不過前輩他把安裝過程放在 google docs 並且用 iframe 的方式崁入,結果當然是google找不到囉。

這個 bug 原因是安裝在非英語系的win os造成的檔案內容錯誤,因此導致 zend server 的管理介面無法啟動。

解決方式 :

找到 zend server 的安裝目錄,並且找到 etc/ZendEnablerConf.xml 的這個檔案,如果你是依照我上面的安裝步驟以及相同的設定,那麼他應該會在 C:/zend/ZendServer/etc/ZendEnablerConf.xml 這個位置,將這個檔案打開(win7 的用戶請先給予修改權限)

打開這個檔案以後看起來沒什麼問題,但是怎麼 xml 的開頭會變成亂碼了呢~

image

我們把前面的部份復原成 <?xml

image

之後重新啟動 apache 就可以囉 (請到服務管理員)

回來了,大師兄都回來了。

image

STEP 4 :

同意zend條款後,設定一下自己的密碼以及把授權碼打進去

image

如此一來 Server 的部份就設定好囉

image

Zend Studio Debug mode

還記得我們之前安裝好的 Zend Studio 嘛,當我們打開 Zend Studio 的時候下方會自動提示我們找到 Zend Server

image

不過如果是預設偵測他的 port 應該會寫 10080 ,我們先開啟屬性把它修改為 80 port

image

修改完後我們就可以開啟一個 php project

File – New – PHP project

如果正確偵測到 server 安裝,這時應該會直接把專案設定在 htdocs 資料夾內

image

接著我們 new 一個 php file

image

接下來我們輸入一些範例程式碼,打完之後再程式碼區域 按右鍵-> Run As –> php web page

image

這個時候應該會出現一個對話視窗,請確認是否還有出現 :10080 ,如果有,表示我們的 server 設定沒有設定好,請重新設定。

image

很高興我們正確的將資料計算出來

image

不過如果計算是結果是錯誤的,那我們就需要 debug,這時候回到程式碼頁面,你可以在最後輸出程式碼的最前面的數字區點擊左鍵兩下後,在程式碼編輯區域按下右鍵 –> debug as –> php web page

image

這時候會跳出一個對話窗,問你是否要進去 debug mode

image

這時候程式碼會停在我們插入的中斷點,並且會多出一個變數區域,會記錄目前我們程式執行期內的所有變數以及他的形態,這樣子就不需要在瞎子摸象了。

image

Debug mode 應該是最好用也最必須要的功能,不過還有其他 ide 軟體也可以達到這個功能,例如 NuSphere 所出產的 PhpED 也有 Debug mode ,並且還包含 db 的連線與控制,也是蠻不錯的一套軟體,但是基於 zend 是 php 維護的主要公司,牆頭草兩邊倒,目前還是會導向 zend 吧,並且後面還有 Zend Frameword 框架要用,因此…

其他 zend server 重要的功能包含

提高PHP應用程序的可靠性和安全性
確保成功部署
在客訴電話之前發現問題
快速精確找出問題的根源跟踪代碼
提高應用程序性能
工作隊列:卸載執行長時間運行的PHP腳本

當然,這也是要費用的 一年更新的費用為 1195 美金,如果只是需要執行 php 程式碼,可以下載 Zend Server CE 版本來使用,是免費的,不過不知道是否可以使用 Debug mode 。

最後這一篇實在很長,如果看完的人,謝謝你的詳細閱讀

Random Posts

分享到:
评论

相关推荐

    Episode1

    在IT行业中,字体设计与应用是一个非常重要的领域,它涉及到用户界面(UI)设计、网页设计、数字出版、软件开发等多个方面。"Episode1"可能是一个关于字体设计或使用的系列教程的第一部分,虽然提供的信息有限,但我们...

    Episode-Based Prototype Generating Network for Zero-Shot Learnin

    这个框架基于episode训练,每个episode模拟一个零样本分类任务,使得模型可以在没有实际未见类别的数据情况下,通过模拟预测来积累经验,从而提高对真实未见类别的泛化能力。 论文的核心是设计了一个生成模型,该...

    New Episode Notifier:New Episode Notifier 是一个简单易用的工具。-开源

    New Episode Notifier 是一个简单方便的工具,可让您将喜爱的电视节目添加到程序中,作为回报,它会为您提供下载链接和 Torrent 磁力链接。

    Episode:episode 是一个基于 nodejs 的游戏服务器框架

    Episodeepisode is a gameserver framework based on nodejsPomelo追求的是大而全,Episode追求的是小而精。目前只有网络层的功能。监听端口接收数据包发送数据包检测连接断开等事件连接别的网络服务搭建分布式...

    Episode I.pdf

    很抱歉,但根据提供的信息,"Episode I.pdf"的描述似乎与IT行业或技术知识无关。标题和内容更像是一部剧集或故事的概要,包含的人物对话和情节发展是情感和人际关系的叙述,而非技术性的讨论。标签“文档资料 互联”...

    Episode 1: Evolution of Databases

    Introduction to Graph Databases Video Series Episode 1: Evolution of Databases

    Prison Break Season 1 Episode 1

    "Prison Break Season 1 Episode 1" 是一个电视剧集的名称,而非IT技术或软件相关的话题。压缩包中的"PB-1-scripts.doc"可能包含的是该电视剧第一季第一集的剧本,这同样不属于IT领域的知识内容。 如果您的意图是...

    DevExpress VCL v40 Full Source - Episode 2

    DevExpress VCL v40 Full Source - Episode 2

    Intro to Graph Databases Episode #3 - Property Graph Model.mp4

    Intro to Graph Databases Episode #3 - Property Graph Model.mp4

    City-17-Episode-One-Source:City 17的完整源代码-one source code

    《City-17 Episode One Source》是基于Valve公司开发的Source引擎的一个开源项目,它提供了游戏"City 17 Episode One"的完整源代码。这个项目为开发者、游戏爱好者和学习者提供了一个深入理解Source引擎工作原理以及...

    Laravel开发-thetvdb2

    【Laravel开发-thetvdb2】是一款专为Laravel框架设计的客户端库,它使得开发者可以方便地与thetvdb.com网站的...通过熟练掌握这个包的使用,你可以构建出高效且用户友好的电视节目查询、推荐系统或者个人追番记录工具。

    Intro to Graph Databases Episode #5 - Cypher, the Graph Query La

    Intro to Graph Databases Episode #5 - Cypher, the Graph Query Language.mp4

    设定,星球大战,绘画设定 Art.of.Star.Wars.Episode

    绘画设定 Art.of.Star.Wars.Episode绘画设定 Art.of.Star.Wars.Episode绘画设定 Art.of.Star.Wars.Episode绘画设定 Art.of.Star.Wars.Episode绘画设定 Art.of.Star.Wars.Episode

    The To-Tickle List Episode 10 Win 106.zip

    The To-Tickle List Episode 10 Win 106.zip

    Android代码-安卓部分小控件

    Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode) episode 1 -- ActionBar episode 2 -- TableBar episode 3 -- CustomMenu episode 4 -- CustomDialog episode 5 -- PhoneInput episode 6 -...

    06-shadows-of-the-knight-episode1

    标题“06-shadows-of-the-knight-episode1”似乎暗示了一个系列的第六部分,可能是一个教程或案例研究,涉及编程或技术问题的解决。在IT行业中,这种命名方式经常用于表示一系列的教学视频、文章或者代码示例,尤其...

    birdboard:Laracasts Episode-使用TDD构建Laravel应用

    在本项目"birdboard"中,我们探讨了如何利用测试驱动开发(Test-Driven Development, TDD)技术来构建一个基于Laravel框架的应用。Laracasts是一个知名的在线教育平台,专注于提供PHP和Laravel相关的高质量教程。在...

    episode0走遍法国讲解.pdf

    在“Episode 0 走遍法国讲解.pdf”中,主要涵盖了法语初学者需要掌握的基础知识,包括日常对话、语法要点以及动词变位。以下是这些知识点的详细解释: 1. **日常对话**: - **S'appeler**: 这是一个动词短语,意为...

    Intro to Graph Databases Episode #6 - Continuing with Cypher.mp4

    Intro to Graph Databases Episode #6 - Continuing with Cypher.mp4

    Episode Hack 2021 - Get Free Gems and Passes-crx插件

    1.单击带有三个水平线或三个点的按钮,该按钮位于您的Chrome:trade_mark:浏览器的右上角。 2.从下拉菜单中,单击更多工具&gt;扩展。 3.在要删除的扩展名旁边,单击删除。 4.如果您只是想隐藏扩展名而不是删除扩展名,则...

Global site tag (gtag.js) - Google Analytics