Sorun söz konusu. Bununla ilgili çözümler için kapsamlı bir araştırma yaptım ve bunun konularının olduğunu biliyorum ve onları da takip ettim ve hiçbir şey işe yaramadı. Şu ana kadar yaptığım her şeyi listeleyeceğim söyleniyor. Windows XP bilgisayarımdaki en son Eclipse sürümünde Zend Debugging ile PHP 5.2.14 çalıştırıyorum. 1 GB RAM'im var. Yüklü Apache, MySQL ve FileZilla ile çalışan XAMPP var.
XAMPP'de aşağıdakileri yaptım (Bu değişiklikler sırasında Apache kapalıydı): XAMPP Kontrol Panelinden Yönetici'yi tıklayıp adresine gittik https:// localhost/xampp/
. Oradan karşılama sayfasında bu satırdan certs kabul:
OpenSSL desteği için lütfen https: // 127.0.0.1 veya https: // localhost içeren test sertifikasını kullanın.
Aynı bölümde kontrol ettim phpinfo()
. 'Çevre' altında, SERVER["HTTPS"]
bir on
. 'Apaçi Çevre' altında, HTTPS
bir On
. 'PHP değişkenleri altında _SERVER["HTTPS"]
olduğunu On
. 'Phar' altında OpenSSL support
olduğu disabled
(dahili / openssl yüklemek). Phar'ı nasıl etkinleştireceğimi bilmiyorum.
Şimdi C: \ xampp dosyalarında kendilerini PHP klasörüne gittim. (Üzgün daha iyi güvenli) hem üretim ve geliştirme php.ini dosyaları altında ben allow_url_fopen=On
, allow_url_include=On
ve bu yüzden, noktalı virgül kaldırıldı extension=php_openssl.dll
artık dışarı yorum. Hatta .dll PHP klasörünün ext klasöründe olduğunu doğruladı. Hem libeay32.dll hem de ssleay32.dll, PHP ve Apache klasörlerinde bulunur. Apache klasörü üretken veya geliştirme php.ini dosyalarını içermez.
Http://www.slproweb.com/products/Win32OpenSSL.html adresine gittim ve güvenli ölçüm için Win32 OpenSSL v1.0.0d'yi yükledim.
Şimdi benim retrieve_website.php söz konusu kod satırı şöyle:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
Sorguladığım diğer iki web sitem var ama HTTP ile sunuluyor ve iyi çalışıyor. Ayrıca kodun sonuna yakın girilen bu kod satırı var:
echo 'openssl: ', extension_loaded ('openssl') ? 'yes':'no', "\n";
echo 'http wrapper: ', in_array('http', $w) ? 'yes':'no', "\n";
echo 'https wrapper: ', in_array('https', $w) ? 'yes':'no', "\n";
echo 'wrappers: ', var_dump($w);
Eclipse üzerinde bir PHP Script olarak çalıştırdığımda, her şey mükemmel bu çıktıları ile birlikte istediğim şekilde mükemmel çıktılar:
openssl: yes
http wrapper: yes
https wrapper: yes
wrappers: array(10) {
[0]=>
string(5) "https"
[1]=>
string(4) "ftps"
[2]=>
string(3) "php"
[3]=>
string(4) "file"
[4]=>
string(4) "data"
[5]=>
string(4) "http"
[6]=>
string(3) "ftp"
[7]=>
string(13) "compress.zlib"
[8]=>
string(14) "compress.bzip2"
[9]=>
string(3) "zip"
}
Yaptığım tüm bu değişikliklere rağmen (Apache'yi başlattıktan sonra), Eclipse ve Firefox'taki PHP betiğime http: //localhost/tutorial/retrieve_website.php aracılığıyla ilk kez eriştiğimde hala aynı hataları alıyorum :
Uyarı: file_get_contents () [function.file-get-content]: "https" sarmalayıcısı bulunamıyor - PHP'yi yapılandırırken etkinleştirmeyi unuttunuz mu? C: \ xampp \ htdocs \ tutorial \ retrieve_website.php satırında 29
Uyarı: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= kaldırıldı API Kimliği & cx = kaldırılan arama kimliği & q = + Şeytan + + aşağı + + Georgia + alt + atom & num = 5'e gitti) [function.file-get-content]: akış açılamadı: 29. satırda C: \ xampp \ htdocs \ tutorial \ retrieve_website.php dosyasında böyle bir dosya veya dizin yok
Uyarı: DOMDocument :: loadXML () [domdocument.loadxml]: 33. satırdaki C: \ xampp \ htdocs \ tutorial \ retrieve_website.php dosyasına giriş olarak sağlanan boş dize
openssl: hayır http sarmalayıcı: evet https sarmalayıcı: sarmalayıcı yok: dizi (10) {[0] => dize (3) "php" [1] => dize (4) "dosya" [2] => dize (4 ) "glob" [3] => dize (4) "veri" [4] => dize (4) "http" [5] => dize (3) "ftp" [6] => dize (3) " zip "[7] => dize (13)" sıkıştır.zlib "[8] => dize (14)" sıkıştır.bzip2 "[9] => dize (4)" phar "}
Göz ardı ettiğim ya da yapamadığım şey nedir? Kendi bilgime göre, HTTPS ve OpenSSL ile ilgili araştırdığım her şeyi yaptım
/apache/bin/php.ini
XAMPP Taşınabilir Işık 1.8.1'de bulamadığımdan emin misiniz ? Ancakphp/php.ini
var, ancak burada