2009-11-10 19 views
52

我在PHP中啓用套接字傳輸「ssl」時遇到問題。當我運行我的腳本,我得到的錯誤:未啓用PHP中的套接字傳輸「ssl」

Warning: fsockopen() [function.fsockopen]: unable to connect to ssl://www.my.site.com:443 (Unable to find the socket transport "ssl" - did you forget to enable it when you configured PHP?)

我在Windows上運行IIS6,這是我到目前爲止已經做了嘗試得到它的工作:

  • 的註釋掉在php.ini php_openssl.dll和php_sockets.dll擴展
  • 確信PHP被加載我更改了(這是和它肯定加載其他擴展,所以我相當肯定,這是沒有問題的ini文件)
  • 確保php_openssl.dll和php_sockets.dll在正確的位置
  • 複製ssleay32.dll和的libeay32.dll到主PHP文件夾,在WINDOWS文件夾,並確保Windows路徑變量包括
  • 確信的PHP的位置的WINDOWS/system32文件夾下
  • 文件的權限是正確的在所有相關文件上。

我幾乎每改變一次都重新啓動IIS,但我沒有任何運氣。有什麼顯而易見的,我做錯了嗎?無論如何要在較小的部分進行故障排除? (因此,我可以通過排除法找出問題......?)

不幸的Windows/IIS不是我的專業領域 - 從來就被投入了負責,因爲沒有其他人似乎知道什麼。

+1

php.log如何查找,如果您沒有啓用日誌記錄,請這樣做。 – RageZ 2009-11-10 05:45:34

+0

要擴展@ RageZ的評論:是在php.ini中打開'display_startup_errors'? – 2009-11-10 06:00:33

+0

是的,我們確實啓用了日誌記錄...但是作爲我的n00b,我完全忘了檢查> _ <我們得到的錯誤是: 「PHP警告:PHP啓動:無法加載動態庫」 C:\ PHP \ ext \ php_openssl.dll' - 訪問被拒絕。「 看到後,我認爲它可能是php_openssl.dll的權限問題,但我們將它與該文件夾中的另一個dll(我們知道正在加載)進行比較,它們似乎具有相同的權限和組。有沒有其他的東西可以阻止這個DLL加載? – jelina 2009-11-11 00:18:48

回答

20

成功!

檢查日誌文件,並確保在php_openssl.dll的權限是正確的,我用Google搜索了警告,並發現更多的東西去嘗試。

所以我:

  • 加入C:\ PHP \分機到Windows路徑
  • 添加的libeay32.dll和ssleay32.dll到C:\ WINDOWS \ SYSTEM32 \ INETSRV
  • 重新啓動服務器

我不確定哪些修復了我的問題,但現在已經修復了! :)

我發現這些東西來試試這個頁面上: http://php.net/manual/en/install.windows.extensions.php

感謝您的幫助!

+0

:(沒有爲我工作。 – 2012-12-27 12:11:36

+1

@XCoder,試試這個答案然後:http://stackoverflow.com/a/13441842/439427 – 2013-05-26 00:15:36

+0

@RubensMariuzzo謝謝,但我已經解決了,問題是我的64位系統和解決方案是複製一些位置上的DLL,我不記得確切的步驟。 – 2013-05-26 07:58:45

66

我是有問題在Windows 7中使用PHP 5.4.0在命令行中,使用XAMPP 1.8.1服務器。這是我做過什麼:

  1. 重命名php.ini-productionphp.ini(在C:\ XAMPP \ PHP \文件夾中)
  2. 編輯php.ini並取消extension_dir=ext
  3. 也取消註釋extension=php_openssl.dll

之後,它工作得很好。

+1

使用WampServer 2.2我只需在'C:\ wamp \ bin \ php \ php5.3.13'中編輯'php.ini',然後取消註釋'extension = php_openssl.dll'。 – 2013-05-26 00:14:46

+13

只需取消註釋擴展名= php_openssl.dll並重新啓動Apache也適用於我。 – 2013-06-02 00:27:09

+6

非常感謝。它幾乎讓我哭泣:-) – 2013-06-28 06:01:55

1

我剛纔在遇到laravel時也遇到了這個問題。

我使用wampserver窗戶,不得不復制/bin/apache/apacheversion/bin/php.ini文件/bin/php/phpversion/php.ini

8

在XAMPP版本1.7.4服務器在php ini文件中沒有extension = php_openssl.dll行。我們必須在php.ini文件中添加extension = php_openssl.dll

+0

中所述的設置進行設置。實際上,它必須手動添加,但分機幸運的是,它包含了php_openssl.dll。 – 2013-01-29 08:38:28

+0

謝謝,這已經修復了我的錯誤。 – kubilay 2013-04-26 14:57:33

7

在嘗試使用SSL加密發送電子郵件的Laravel 4中遇到同樣的問題。

在Windows 7 64bit上擁有WAMPServer 2.2我只在php.ini中啓用了php_openssl,重新啓動了WAMPServer並完美地工作。

難道以下:

  • 點擊WampServer - > PHP - > PHP擴展 - > php_openssl
  • 重新啓動WampServer
7

只是取消註釋延長= php_openssl.dll 重啓Apache服務和這應該有所幫助。