2016-02-07 162 views
30
composer create-project flarum/flarum . --stability=beta 

我嘗試運行此命令,但它給了我這個錯誤。SSL/TLS保護需要openssl擴展

[RuntimeException]               
    The openssl extension is required for SSL/TLS protection but is not availab 
    le. If you can not enable the openssl extension, you can disable this error 
    , at your own risk, by setting the 'disable-tls' option to true. 

我嘗試添加「延長= php_openssl.dll」到「的php.ini」,但它仍然得到這個錯誤

+1

我嘗試添加「延長= php_openssl.dll」到「的php.ini」,但它仍然得到這個錯誤 – tenki

+1

的[作曲警告可能重複:OpenSSL的擴展名丟失。如何使WAMP(http://stackoverflow.com/questions/14062055/composer-warning-openssl-extension-is-missing-how-to-enable-in-wamp) –

+0

手動或從包安裝你的PHP ? – apex39

回答

71

內容時發生到我同樣的錯誤。我通過關閉TLS for Composer來修復它,這並不安全但我假設我的開發機器存在風險。

試試這個:

composer config -g -- disable-tls true 

,並重新運行作曲。它適用於我!

但它不安全,並且不建議用於您的服務器。官方網站上說:

如果設置爲true,則所有HTTPS URL將被HTTP嘗試,而不會執行網絡級加密。啓用此功能存在安全風險,不建議使用。更好的方法是在php.ini中啓用php_openssl擴展。

如果你不想在你的機器/服務器,以使不安全層,然後設置你的php,使OpenSSL和它也可以。確保已安裝PHP Openssl擴展,並在php.ini文件中啓用它。


要啓用OpenSSL的,添加或發現並取消對您的php.ini文件這一行:

的Linux/OSX:

extension=php_openssl.so 

的Windows:

extension=php_openssl.dll 

並重新加載您的php- fpm/web-server如果需要的話!

+8

你沒有修復它。你只是隱藏了錯誤。 您需要在Wamp服務器的php.ini文件中啓用open_ssl模塊。 Wamp使用2個php.ini文件。一個用於Apache和另一個CLI。 您需要啓用第二php.ini文件open_ssl擴展,你可以在c。找到:\ WAMP \ BIN \ PHP \ \ php.ini中 –

+2

是的,我知道,但是出於某些原因我公司不允許啓用TLS,並且用戶@thermos評論說打開open_ssl模塊並且不起作用。然後我就這個問題給出我的解決方案。 –

+0

另外,如果你在本地開發機器上運行,這真的是不安全的嗎?這會如何影響服務器的安全性? – Hassan

8

根據作曲家reference有兩個相關選項:disable-tlssecure-http

nano ~/.composer/config.json ...

{ 
    "config": { 
     "disable-tls": true, 
     "secure-http": false 
    } 
} 

則抱怨了:

You are running Composer with SSL/TLS protection disabled. 
Warning: Accessing getcomposer.org over http which is an insecure protocol. 

,但它執行composer selfupdate(或其他)。

雖然不能簡單地在Linux上「啓用SSL中的php.ini」; PHP需要使用配置爲shared庫的openSSL進行編譯 - 以便能夠從PHP CLI SAPI訪問它。

4

我有完全相同的問題,找不到解決方案,所以思考和尋找一段時間後,我發現我的PHP.INI顯然沒有在我的PHP擴展的正確目錄中查找,所以我去了下:

「目錄,其中加載擴展(模塊)駐留」。 ,發現如下:

; http://php.net/extension-dir 
; extension_dir = "./" 
; On windows: 
;extension_dir = "ext" 

,只需取出; infront of「extension_dir =」ext「,請注意這僅適用於Windows,如果您正在運行不同的操作系統,請先刪除第一個extension_dir前面的分號

我不知道爲什麼我的系統還沒有被標記,但它只是要尋找如果你有問題

+0

這適用於我 - 與取消註釋/在php.ini中添加extension = php_openssl.dll行的解決方案一起使用 –

4

要啓用OpenSSL的進入php.ini文件並啓用此行:

extension=php_openssl.dll 

,如果你不想讓你的OpenSSL可以設置作曲家不使用OpenSSL的使用這個命令:

composer config -g -- disable-tls true 

但是,這是一個安全問題。

+0

要配置Composer以信任Ubuntu上的CA,請將證書放入'/ usr/local/share/ca-證書/',要在Windows上完成,你放棄並找到另一份工作。 –

+0

openssl啓用但我仍然有同樣的錯誤 – Wel

1

這個問題在php.ini文件

extension=php_openssl.dll extension_dir = "ext"

它在我的機器上工作,由於OpenSSL和推廣總監所以取消下面的擴展發生。