OpenSSL etkin ancak çalışmıyor

1 Cevap php

Apache 2.2.13 ve PHP 5.2.12 çalıştırıyorum. Sadece yüklü PHP 5.2.12 manuel (tüm uzantıları erişmek için) ve OpenSSL'yi sağladı. phpinfo () OpenSSL etkin ve OpenSSL 0.9.8k 25 Mart 2009 çalıştığını gösterir.

Ben bu hatayı alıyorum: PHP Ölümcül hata: tanımlanmamış işlev ftp_ssl_connect çağır ().

Ben PHP kılavuzu 'ftp_ssl_connect () ftp modülü ve OpenSSL desteği, hem php duruk inşa halinde kullanılabilir' ve Windows ile çalışmak için 'kendi PHP çalıştırılabilirlerini derlemek gerekir' olduğunu ileri devletler göstermektedir nerede gördüm .

I phpinfo () Sadece ben hattı 'extension = php_openssl.dll' uncommented ve doğru klasörler ve ortam değişkenleri doğru yolda doğru DLL dosyaları var çünkü 'etkin' olmak gibi OpenSSL'yi gösterir şüphe var. Ve belki de PHP içine statik bir yapı ne olursa olsun () gösterir ne Phpinfo içinde yerine getirmesi gerekir.

I (yukarıda anlatıldığı gibi) dağılımının amacı, dinamik uzantıları olduğuna inanıyoruz, ama (OpenSSL) yeniden derlemek statik uzantısı kodlamaktır.

ftp uzantısı (PHP 5.2 yerleşik) çalışma gayet iyi. Aşağıdaki kod ile test:

$conn_id = ftp_connect($url); $login_result = ftp_login($conn_id, $username, $password); ftp_close($conn_id);

SSL kontrol unutmayın, ben sadece ftp_ssl_connect için ftp_connect değiştirin. Bu satırı ulaşan, benim Apache hata günlük dosyasına yukarıdaki PHP hatası alıyorum.

1 Cevap

Olarak documentation states (quoting what you already quoted),

Note: Why this function may not exist
ftp_ssl_connect() is only available if both the ftp module and the OpenSSL support is built statically into php, this means that on Windows this function will be undefined in the official PHP builds.
To make this function available on Windows you must compile your own PHP binaries.

Eğer "el" PHP yüklü söylüyorlar; ama bu muhtemelen hala kullanılan anlamına gelen "resmi" php.net den inşa - kendi PHP çalıştırılabilirlerini derlenmiş değil yani ... Peki, bu işlev mevcut değildir.


There is no magic : it seems you'll have to re-compile PHP, using the right configuration options at compile-time, if you want to be able to use that function...

İşte bu konuda bazı belgeler bulunuyor: Build your own PHP on Windows - ama ... iyi şanslar ... Ben pencere üzerinde PHP derlemek için "basit" olduğunu duymadım, aslında (it's not that hard on Linux, but Linux is maybe a bit more well suited when it comes to compilation)


A couple of other solutions :

  • Lütfen gelişmelere Linux'a geçiş (even if it's only using a Virtual Machine) - ama hala almak için PHP derlemek zorunda olabileceğini (might not be enabled by default)
  • sadece bu fonksiyonu kullanarak değil; barındırma hizmeti onunla sağlayacaktır eğer tüm sonra, biliyor musun? (If you can't use it on your production server, no need to use on your development/testing machine)