簡體   English   中英

Apache啟動時不會加載PHP擴展

[英]PHP extensions won't load on Apache startup

我已經添加了php作為Apache 2.2.11的模塊:

LoadModule php5_module "c:/php/php5apache2_2.dll"

並補充說

AddType application/x-httpd-php .php

在PHP.ini中,我的擴展名dir設置為: extension_dir = "C:\\php\\ext"

是的 ,目錄是正確的,所有文件都存在。

但是當我啟動apache時,我收到了以下錯誤:

PHP警告:PHP啟動:無法加載動態庫'C:\\ php \\ ext \\ php_mysql.dll' - 找不到指定的模塊。\\ r \\ n在第0行的未知中
PHP警告:PHP啟動:無法加載動態庫'C:\\ php \\ ext \\ php_pdo_pgsql.dll' - 找不到指定的模塊。\\ r \\ n在第0行的未知中
PHP警告:PHP啟動:無法加載動態庫'C:\\ php \\ ext \\ php_pgsql.dll' - 找不到指定的模塊。\\ r \\ n在第0行的未知中

[Sun May 17 03:46:01 2009] [通知] Apache / 2.2.11(Win32)PHP / 5.2.9-2配置 - 恢復正常操作
[Sun May 17 03:46:01 2009] [通知]服務器內置:2008年12月10日00:10:06
[Sun May 17 03:46:01 2009] [通知]家長:創建子進程4652

PHP警告:PHP啟動:無法加載動態庫'C:\\ php \\ ext \\ php_mysql.dll' - 找不到指定的模塊。\\ r \\ n在第0行的未知中
PHP警告:PHP啟動:無法加載動態庫'C:\\ php \\ ext \\ php_pdo_pgsql.dll' - 找不到指定的模塊。\\ r \\ n在第0行的未知中
PHP警告:PHP啟動:無法加載動態庫'C:\\ php \\ ext \\ php_pgsql.dll' - 找不到指定的模塊。\\ r \\ n在第0行的未知中

[Sun May 17 03:46:01 2009] [通知]兒童4652:兒童過程正在運行
[Sun May 17 03:46:01 2009] [notice] Child 4652:獲得了啟動互斥。
[Sun May 17 03:46:01 2009] [notice] Child 4652:啟動64個工作線程。
[Sun May 17 03:46:01 2009] [notice] Child 4652:啟動線程偵聽端口80。

所以我可能在這里忘記了一些簡單的事情,有人能告訴我我忘了什么嗎?

您不僅需要PHP擴展的DLL來為PHP添加MySQL和PostgreSQL支持。 您還需要MySQL和PostgreSQL本機庫。 PHP擴展的DLL可能找不到它們依賴的DLL,因此它們無法啟動。

確保已安裝MySQL和PostgreSQL客戶端,並將其DLL放入某些可定位的位置。

IE示例:

  • php_mysql.dll依賴於libmysql.dll

所以,確保PHP能夠找到libmysql.dll(我相信這個附帶了Windows PHP的二進制發行版。但不確定)。

添加到Pablo Santa Cruz的建議中。 在Windows上,您可以在PATH環境中包含所需的庫。 (不一定要復制到Windows文件夾)。 加載庫時,widows也會在PATH目錄中查找。

如果您使用php.net的PHP5.2標准Win32二進制分發版,則該軟件包應該包含軟件包根目錄中的所有依賴項。 因此,如果您已將PHP5.2安裝到C:\\php ,請將此目錄添加到PATH envar中。 重啟Apache,我希望擴展能夠正確加載。

我有同樣的問題。 我每次嘗試登錄phpmyadmin時都會收到其中一個令人討厭的Windows彈出錯誤。 我鍵入了用戶名和密碼,然后拋出錯誤。

為我解決了什么,也是將libmysql.dl復制到apache bin目錄。 奇怪的是,正確包含的擴展名仍然是我需要這樣做的。

我嘗試了其中一些解決方案,其中一個或多個解決了......重新啟動是關鍵。 我沒有在這些更改之間重新啟動,但在我重新啟動后它正在工作:

  • 將postgres DLL添加到apache lib目錄
  • 將postgres路徑添加到系統PATH
  • 將postgres DLL添加到system32

我相信只有PATH會有效,但沒有時間在這里清潔,所以你去。

這些擴展依賴於由MySQL和PostgreSQL二進制發行版提供的本機庫。 例如,安裝它們並將lib放在apache的bin文件夾中。 LIBPQ.DLL分別是LIBMYSQL.DLLLIBPQ.DLL

我通常這樣做而不是用它們污染Windows/System32文件夾,因為在我的系統上只有apache / php是這些數據庫的客戶端,而且它使我的apache / php設置更加便攜。

我在Windows上遇到了特定版本的PHP問題。 問題是libmysql。 我在php.net網站上發現了一個有相同問題的人發布的錯誤。

我使用了以前的php發布和libmysql工作。 查看您正在使用的php發行版的注釋。 我認為在特定版本之后,他們提到了一個關於libmysql的新政策。

從你提到的PHP無法找到擴展名。 確保已在php.ini上設置路徑,該路徑指定擴展所在的位置,擴展存在以及可以訪問該文件夾(讀取權限)。

如果全部失敗,請嘗試將擴展程序移動到windows / system32,以便找到可能存在的真正問題。

問候,

根據我的經驗,Windows上的PHP是背后的主要痛苦。 我通常最終會讓它工作,但總是有很多谷歌搜索和試錯,至少對我來說。

所以我終於厭倦了它,只是在一台虛擬機中安裝了Ubuntu Server,並在幾分鍾內啟動並運行。 這是否是你的選擇,我不能說,但如果是這樣,從長遠來看,它絕對會給你帶來很多麻煩。 更不用說你總是可以移動你的虛擬機,創建快照,並做所有其他虛擬的東西,虛擬機是有益的。

我也有同樣的問題,並通過將“PostgreSQL”bin路徑添加到系統環境變量中來解決

路徑:C:\\ Program Files \\ PostgreSQL \\ 8.4 \\ bin您也可以簽入phpinfo()。

當我安裝PostgreSQL時,設置為系統路徑錯過了。 我手動添加然后重啟系統。

我也有這個問題,並將相關的(.dll)復制到systen 32,它仍然不適合我。 我正在運行Windows 7 64位。 為了讓我能夠工作,我還必須將libmysql.dll復制到ext目錄。 該錯誤消息使Apache日志和頁面加載了有利的響應(建立了連接)。

這里的問題是apache已加載PHP,但PHP無法加載其擴展名(mysql,postgresql,...)。 我認為你應該以unix格式在php.ini文件中輸入路徑值(不要使用反斜杠字符作為目錄分隔符)。 所以在你的php.ini文件中改變這個:

的extension_dir = “C:/ PHP / EXT”

我有同樣的問題,並嘗試將libmySQL.dll復制到apache bin文件夾,它解決了問題(我正在設置PHP 5.2.5 x64)。 非常感謝。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM