[轉]PHP service in WIN7 64位元 ERROR : FastCGI 處理序意外地結束-排除方法

http://yeuyun.pixnet.net/blog/post/39374029-%5B%E6%8A%80%E8%A1%93%5Dphp-service-in-win7-64%E4%BD%8D%E5%85%83-error-%3A-fastcgi-%E8%99%95%E7%90%86

 

搞了好幾天的PHP 的安裝,一直無法排除PHP 的錯誤,

錯誤訊息如下:

錯誤摘要

HTTP 錯誤 500.0 – Internal Server Error

C:\php\php-cgi.exe – FastCGI 處理序意外地結束

詳細錯誤資訊
模組 FastCgiModule
通知 ExecuteRequestHandler
處理常式 PHP via FastCGI
錯誤碼 0xc0000135
要求的 URL http://localhost:80/phpinfo.php
實體路徑 C:\inetpub\wwwroot\phpinfo.php
登入方法 匿名
登入使用者 匿名

完整錯誤畫面如下圖:

PHP-error

接著在網路上找了一堆方法仍然無法有效排除問題,

後來索性直接執行php-cgi.exe,跳出錯誤訊息,

msvcr110.dll 檔案遺失,

該檔案室屬於VS2012以上的版本才有(我只有裝VS2008),系統開發人員如果沒有安裝,

或是安裝較低版的就沒有msvcr110.dll,

因為PHP的版本是php-5.5.0RC2-Win32-VC11-x64,

人家擺明就說了VC11要2012了~=  =~

http://windows.php.net/download/#php-5.5

( VC9 or VC11 (Visual Studio 2008 and 2012 compiler respectively)

怪自己豬頭沒有注意~

問題釐清了,那我自己本身沒有VS2012的話該怎麼辦呢~

有二個方法:

1.網路上有很多網站有提供msvcr110.dll的檔案,

複製到C:\Windows\System32,

記得要註冊檔案REGSVR32 msvrc110.dll,

但~我懷疑別的網站所提供的DLL安全性就是了,

所以我裝了另一個微軟開發套件;

2.適用於 Visual Studio 2012 Update 3 的 Visual C++ 可轉散發套件

http://www.microsoft.com/zh-tw/download/details.aspx?id=30679

 下載後安裝就會有msvcr110.dll的元件了,

比較安全也比較快速,二個方法都可以用。

[轉]IIS7上使用PHP

來源 http://coding.anyun.tw/2011/05/02/using-php-on-iis/

前言

PHP 是一種簡單方便的語言,加上它又是免費,因此受到相當多人的青睞,而在架設可以執行 PHP 的伺服器上,除了使用Apache 以外,我們也可以使用 IIS 來執行 PHP 的程式。而在比較舊版本的 IIS 和 PHP 上面要設定會有點麻煩,有時候會遇到不少莫名其妙的問題,但是現在已經可以很簡單又快速的設定好 PHP 在 IIS7 上面執行,下面就簡單說明設定過程。

說明

首先先到 PHP 的官方網站下載 Windows 版本的 PHP,裡面會有許多類型的檔案,根據自己電腦和需求下載檔案了,它也有包裝好的安裝檔,可以直接幫我們設定到好,但是這邊我習慣下載 ZIP 檔案再自己設定。我將下載好的檔案解壓縮到C:\php\ 下面,接下來就可以開始設定囉!

先確定我們的 IIS 有沒有開啟 CGI 模式,依序開啟【控制台】→【程式和功能】→【開啟或關閉 Windows 功能】,然後將IIS 的 CGI 功能啟用。

IIS_PHP_1.png

接下來開啟 IIS,選擇處理常式對應

IIS_PHP_2.png

選擇新增模組對應

IIS_PHP_3.png

然後依照下圖做設定,按確定之後,我們的網站就可以執行 PHP 囉!

IIS_PHP_4.png

此外也別忘記把 C:\php\php.ini-development 或 C:\php\php.ini-production 改名成 php.ini 放到 C:\windows 目錄下囉!至於裡面的設定該如何設定可以參考網路上的說明,就不再介紹了。

結論

現在要設定 PHP 在 IIS 上面執行比起以前真的簡單許多了,如果是 IIS 6 可以查看參考資料的連結,裡面也有詳細的介紹,如果覺得我這一篇不夠清楚也可以參考 Set Up FastCGI for PHP 這一篇文章,裡面有影片設定教學喔!

參考資料

Set Up FastCGI for PHP

Using FastCGI to Host PHP Applications on IIS 6.0

Using FastCGI to Host PHP Applications on IIS 7

ASP.NET的來回模式

ASP.NET的來回模式

在 ASP.NET 運行的時候,經常會有網頁的來回動作 (round-trip),在 ASP.NET 中稱為 PostBack,在傳統的 ASP 技術上,判斷網頁的來回是需要由開發人員自行撰寫,到了 ASP.NET 時,開發人員可以用 Page.IsPostBack 機能來判斷是否為第一次執行(當 ASP.NET 發現 HTTP POST 要求的資料是空值時),它可以保證 ASP.NET 的控制項事件只會執行一次,但是它有個缺點(基於 HTTP POST 本身的缺陷),就是若使用者使用瀏覽器的重新整理功能(按 F5 或重新整理的按鈕)重新整理網頁時,最後一次執行的事件會再被執行一次,若要避免這個狀況,必須要強迫瀏覽器清空快取才可以。

ASP.NET 2.0 中有新增三個來回模式:

  • Cross Page Postback:允許跨不同的網頁執行 PostBack,伺服端可使用 Page.IsCrossPostBack 來判斷是否是跨網頁型的來回。
  • Async Page Mode:允許網頁使用非同步的方式執行,伺服端可用 Page.IsAsync 來判斷。
  • Callback:ASP.NET 2.0 新增的由網頁回呼使用者端指令的功能,伺服端可用 Page.IsCallback 來判斷是否要求是來自 Callback。

來回模式不僅是 ASP.NET 運作時的核心,它也是 ASP.NET 應用程式的一個主要缺點尤其是在設計複雜度高的頁面時,在網頁中隱藏的 ViewState 的大小會相當大,而在每次的來回動作中,都會傳送 ViewState 在內的表單資訊,大量的 ViewState 會使得傳送的時間拉長,而且每次來回動作都會讓整個網頁被重新整理,而出現閃爍的情況(就算在本機端也一樣),但在AJAX技術尚未成熟時,只能夠忍受這種因底層限制所帶來的問題,在ASP.NET AJAX技術發展出來後,透過UpdatePanel成功的緩解了這個問題(但 ViewState 傳送的問題仍然未根本的解決,必須要使用像 Page Method 這樣的方式才能徹底的解決)。