2009-12-16 76 views
8

我有一臺服務器運行在Windows XP機器上,使用Apache2與PHP和MySQL。我最近升級到Windows 7並且一直無法使其工作。 Apache工作正常,PHP工作,但我似乎無法讓它與php.ini文件一起工作。PHPIniDir破解在Windows 7下?

當我將PHPIniDir設置爲php.ini文件的目錄時,Apache服務不會啓動。

當我將PHPIniDir設置爲無php.ini文件的目錄時,Apache服務確實啓動。

當我離開PHPIniDir時,Apache服務無法啓動。

有沒有人找到解決這個問題的方法?謝謝!

編輯:

PHPIniDir "C:\Windows" #works(無php.ini文件)

PHPIniDir "C:\Program Files (x86)\php\" #does無法正常工作(包含php.ini文件)

啓用最多一個在任何給定的時間。

+1

你可以發佈配置指令,工作和不工作?你的日誌中有任何錯誤嗎? – 2009-12-16 05:51:09

+0

D:\ Apache24 \ bin> httpd.exe -d D:/ Apache24 AH00526:D:/Apache24/conf/httpd.conf中第517行的語法錯誤: 無效的命令'PHPIniDir',可能拼寫錯誤或由模塊未包含在服務器配置中 – 2012-04-04 18:21:51

回答

5

我有同樣的問題..我修好了。用記事本或任何文本編輯器打開php.ini文件。禁用php.ini文件中的所有擴展名。通過一個評論擴展,並找出哪個擴展導致了問題。

3

有以下幾個原因:

  • 舊版本的Apache和/或PHP的。 Apache 2.2.13/2.2.14似乎在Windows 7以及PHP 5.2.11/5.3中運行良好。
  • 某些PHP擴展可能會導致Apache啓動失敗。您可以檢查Apache的日誌文件或在php.ini中啓用'display_startup_errors'(啓用時可以使用ApacheMonitor.exe啓動或停止Apache服務,如果發生錯誤,則會顯示一條消息)。您也可以禁用所有的PHP擴展,並且如果它有助於逐一啓用它們並查看哪個擴展出現問題。
  • Imho,確保你已經下載了PHP的存檔並且沒有使用自動安裝程序。根據我的經驗,安裝人員從未運行良好。您可以隨時將兩個PHP相關的指令(PHPIniDir和LoadModule)添加到Apache的配置文件中,並確保PHP目錄包含在Windows的路徑中。呵呵,服務錯誤也可能是由php2apache庫引起的。
  • 檢查Apache/PHP/MySQL目錄是否包含在Windows的路徑中。這是一個很好的實用工具:Redmond Path。您可以將以下目錄添加到路徑中:Apache/bin dir,PHP dir,MySQL/bin目錄。它可能有幫助。
+0

我試過啓用錯誤,但仍然得到相同的錯誤 - 「請求的操作失敗!」 – giroy 2009-12-16 16:19:56

+0

在php.ini的末尾有一個部分,它看起來像是擴展名。他們是這樣的: [PHP_BZ2] 延長= php_bz2.dll [PHP_CURL] 延長= php_curl.dll 當他們都被註釋掉了,apache的啓動正常。任何想法爲什麼這是? – giroy 2009-12-16 16:27:20

+0

經過一些更多的測試,似乎我可以啓用擴展,但有一些限制,我認爲總擴展大小? – giroy 2009-12-16 16:38:53

2

我有同樣的問題,您必須在httpd.conf中指定PHP模塊的完整URL。

所有這一切我已經找到了導遊說把以下內容:

PHPIniDir "C:/Program Files/PHP" 
LoadModule php5_module "php5apache2_2.dll" 

當實際上你需要:

PHPIniDir "C:/Program Files/PHP" 
LoadModule php5_module "C:/Program Files/PHP/php5apache2_2.dll" 
10

刪除最後一個斜線:

PHPIniDir "C:\Program Files (x86)\php" 
+0

我不敢相信,它實際上工作! – Athari 2013-01-31 22:57:05

+0

再次被'httpd.conf'中的尾部反斜槓咬住......,謝謝 – 2017-12-06 17:20:07

1

我從來沒有能夠超越這條線:

的LoadModule php5_module 「C:/ Program Files文件(x86)的/PHP/php5apache2_2.dll」

所以在無奈之下終於我創建了一個新的文件夾C:/ PHP,複製該DLL到C:/ PHP並改變了線路

的LoadModule php5_module 「C:/PHP/php5apache2_2.dll」

而且第一次它的所有工作!也許它只是不喜歡路徑中的空間。或者,它可能不喜歡長路徑名稱。我不知道。這種修復很可能是特定於Apache和PHP的特定版本,但在花了大約20個小時處理完這個問題之後,我非常混淆,以至於我不知道依賴關係可能是什麼。

1

我也有這個問題,但我可以通過禁用php.ini文件中的所有擴展名(我擁有ext文件夾中的所有DLL,但是它們在php.ini中被禁用) 由於我想使用所有的php擴展,我試着一個接一個地查看哪些是崩潰的Apache。我也在C:中安裝了PHP,以避免「空白/長路徑」問題。 最後,這裏是我的Apache的httpd.conf文件是如何在PHP的一部分:

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL 
PHPIniDir "C:\PHP" 
LoadModule php5_module "C:\PHP\php5apache2_2.dll" 
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL 

而且,這是崩潰的Apache擴展爲:

  • php_oci8.dll
  • php_pdo_oci.dll
  • php_pdo_oci8.dll
  • php_pdo_sqlite_external.dll
  • php_pspell.dll
  • php_sybase_ct.dll

我真的不知道有什麼做錯了什麼,雖然。

請注意,我使用msi安裝程序(php-5.2.17-Win32-VC6-x86.msi)安裝了PHP,並安裝了所有擴展。我也在使用Windows 7.

0

作爲刪除最後一個反斜槓的@ ar2r回答的替代方法,您可以使用(向前)斜槓編寫路徑,即使在最後使用斜槓也可以工作。對於使用反斜槓年底的路徑某些原因沒有工作在最近版本的Windows:

# works, no slash or forward slash at the end 
PHPIniDir "C:\Program Files\PHP7" 
PHPIniDir "C:/Program Files/PHP7/" 
PHPIniDir "C:\Program Files\PHP7/" # mixing slashes and backslashes 

# doesn't works, backslash at the end 
PHPIniDir "C:\Program Files\PHP7\" 

需要注意的是混合着和反斜線只要最後的斜線是工作反斜槓。

這也適用於其他指令,我在爲目錄索引的圖標配置Alias時注意到了這種行爲。