Masalahnya ada di pertanyaan. Saya telah melakukan penyelidikan menyeluruh untuk solusi dalam hal ini dan saya tahu ada topik untuk ini dan saya telah mengikuti mereka juga dan tidak ada yang berhasil. Dikatakan bahwa saya akan menuliskan semua yang telah saya lakukan sejauh ini. Saya menjalankan PHP 5.2.14 dengan Zend Debugging pada versi Eclipse terbaru di komputer Windows XP saya. Saya memiliki 1 GB RAM. Saya menjalankan XAMPP dengan Apache, MySQL, dan FileZilla diinstal.
Pada XAMPP saya telah melakukan yang berikut (Apache mati selama perubahan ini): Mengklik Admin dari Panel Kontrol XAMPP dan pergi ke https:// localhost/xampp/
. Dari sana saya menerima sertifikat dari baris ini di halaman sambutan:
Untuk dukungan OpenSSL silakan gunakan sertifikat tes dengan https: // 127.0.0.1 atau https: // localhost.
Pada bagian yang sama saya periksa phpinfo()
. Di bawah 'Lingkungan', SERVER["HTTPS"]
adalah on
. Di bawah 'Lingkungan Apache', HTTPS
adalah On
. Di bawah 'Variabel PHP, _SERVER["HTTPS"]
adalah On
. Di bawah 'Phar', OpenSSL support
adalah disabled
(instal ext / openssl). Saya tidak tahu cara mengaktifkan yang Phar.
Sekarang mengenai file-file itu sendiri di C: \ xampp, saya pergi ke folder PHP. Di bawah kedua produksi dan pengembangan file php.ini (lebih baik aman daripada menyesal), saya memiliki allow_url_fopen=On
, allow_url_include=On
, dan saya dihapus titik koma, sehingga extension=php_openssl.dll
tidak lagi komentar. Saya bahkan mengkonfirmasi bahwa .dll ada di folder ext folder PHP. Baik libeay32.dll dan ssleay32.dll berada di folder PHP dan Apache. Folder Apache tidak mengandung file php.ini produktif atau pengembangan.
Saya telah mengunjungi http://www.slproweb.com/products/Win32OpenSSL.html dan menginstal Win32 OpenSSL v1.0.0d untuk mengukur keamanan.
Sekarang baris kode yang dipermasalahkan di myveve_website.php terlihat seperti ini:
$urlquery = "https://www.googleapis.com/customsearch/v1?key=".$appid."&cx=".$google_searchid."&q=".$query."&alt=atom&num=".$results;
$xmlresults = file_get_contents($urlquery);
Saya memiliki dua situs web lain yang saya minta tetapi mereka dilayani melalui HTTP dan berfungsi dengan baik. Saya juga memasukkan baris kode ini di dekat akhir skrip:
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);
Ketika saya menjalankannya sebagai PHP Script on Eclipse, semuanya menampilkan dengan sangat baik seperti yang saya inginkan bersama dengan hasil ini:
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"
}
Terlepas dari semua perubahan yang saya buat (setelah saya memulai Apache), saya masih mendapatkan kesalahan yang sama saat pertama kali saya mengakses skrip PHP saya di Eclipse dan Firefox melalui http: //localhost/tutorial/retrieve_website.php :
Peringatan: file_get_contents () [function.file-get-content]: Tidak dapat menemukan pembungkus "https" - apakah Anda lupa mengaktifkannya ketika Anda mengonfigurasi PHP? di C: \ xampp \ htdocs \ tutorial \ mengambilve_website.php on line 29
Peringatan: file_get_contents (https: // www.googleapis.com/customsearch/v1?key= dihapus ID API & cx = ID pencarian yang dihapus & q = The + Devil + pergi + turun + ke + Georgia & alt = atom & num = 5) [function.file-get-content]: gagal membuka streaming: Tidak ada file atau direktori seperti itu di C: \ xampp \ htdocs \ tutorial \ retve_website.php pada baris 29
Peringatan: DOMDocument :: loadXML () [domdocument.loadxml]: String kosong diberikan sebagai input dalam C: \ xampp \ htdocs \ tutorial \ retve_website.php on line 33
openssl: no http wrapper: yes https wrapper: no wrappers: array (10) {[0] => string (3) "php" [1] => string (4) "file" [2] => string (4 ) "glob" [3] => string (4) "data" [4] => string (4) "http" [5] => string (3) "ftp" [6] => string (3) " zip "[7] => string (13)" compress.zlib "[8] => string (14)" compress.bzip2 "[9] => string (4)" phar "}
Apa yang saya abaikan atau gagal lakukan? Sepengetahuan saya sendiri, saya telah melakukan semua yang saya teliti tentang HTTPS dan OpenSSL
/apache/bin/php.ini
, saya tidak dapat menemukannya di XAMPP Portable Light 1.8.1? Namunphp/php.ini
ada, tetapi mengaktifkan ssl di sini tidak membantu :(xampp/php/php.ini
:) terima kasih, PS: JANGAN LUPA UNTUK MENGEMBALIKAN APACHE SETELAH PERUBAHAN SAVINGSaya harus menambahkan
extension=php_openssl.dll
kephp.ini
file saya yang terletak dixampp/php/php.ini
. Entah bagaimana itu tidak ada di sana, setelah menambahkan dan me-restart Apache semuanya bekerja dengan baiksumber
cukup tambahkan dua baris di file php.ini Anda.
ini bekerja untuk saya.
sumber
allow_url_include = On
yang menyelesaikannya untukku.Apache Anda mungkin tidak dikompilasi dengan dukungan SSL. Lagi pula, gunakan cURL sebagai ganti file_get_contents. Coba kode ini, jika gagal maka saya benar.
sumber
$xmlresults = file_get_contents($urlquery);
dengan$xmlresults = curl($urlquery);
. PHP Script menjalankannya dengan hasil yang sama dengan file_get_contents (). Menjalankannya sebagai Halaman Web PHP via localhost / tutorial / recoverve_website.php dan saya mendapatkan kesalahan ini:Fatal error: Call to undefined function curl_init() in C:\xampp\htdocs\tutorial\retrieve_website.php on line 14
'--with-openssl=/usr' '--with-openssl-dir=/usr'
dasarnya Anda perlu mengkompilasi Apache dengan dukungan SSL, Anda juga harus mengaktifkan cURL yang beberapa kali lebih cepat dari FGC, dan memiliki banyak opsi. Saya tidak tahu bagaimana melakukan ini di Windows, maaf.return curl_exec($curl);
, bukankah itu akan mencegahcurl_close($curl);
eksekusi pada baris berikutnya?Saya telah mengaktifkan ekstensi openssl dan berfungsi untuk saya :)
; extension = php_openssl.dll
untuk
extension = php_openssl.dll
sumber
Dalam kasus saya, masalahnya adalah karena WAMP menggunakan php.ini yang berbeda untuk CLI dari Apache, jadi pengaturan Anda yang dibuat melalui menu WAMP tidak berlaku untuk CLI. Cukup modifikasi CLI php.ini dan berfungsi.
sumber
C:\path\to\wamp\bin\php\php5.3.10\php.ini
di OpenSuse 12.1 satu-satunya yang diperlukan adalah:
sumber
Bagi saya, saya harus menghapus tanda komentar pada baris-baris ini di php.ini:
"ext" berlaku jika php_openssl.dll terletak di folder "ext".
Catatan: Saya harus melakukan ini untuk dua file php.ini saya jika tidak maka tidak akan berfungsi. Satu terletak di folder instalasi vs.php, dan yang lainnya di folder PHP
Sumber
sumber
Pada MAC AMPPS, saya memperbarui php-5.5.ini dengan yang berikut ini dan sekarang berfungsi.
sumber
Dalam kasus saya (PHP 7.3 pada Windows dalam mode FastCGI) itu tidak menyenangkan
extension=openssl
. Bukan ekstensi = php_ openssl , karena kebanyakan orang memposting di sini.(Hal yang sama diposting di sini , tetapi tanpa rincian tentang OS yang mungkin menjadi perbedaan utama di sini.)
sumber
PHP7, dalam file php.ini, hapus ";" sebelum
extension=openssl
sumber
Masalah dengan file_get_contents untuk permintaan https di Windows , batalkan komentar pada baris berikut di file php.ini:
sumber
Anda dapat menggunakan fungsi ini sebagai gantinya jika curl diinstal pada sistem Anda:
sumber
Setelah mengintip sepanjang hari, saya menemukan jawabannya berkat panduan ini: http://piwigo.org/forum/viewtopic.php?id=15727
Pada dasarnya di bawah Eclipse -> Windows -> Preferences -> PHP Executables, ada bagian di mana .exe dan .ini direferensikan. Yang default berada di direktori Eclipse ketika Anda menginstal Fitur SDK Alat Pengembangan PHP dari Eclipses Instal Perangkat Lunak Baru di menu Bantuan.
Jadi alih-alih itu, saya menambahkan executable baru bernama PHP 5.3.5 (CGI) dan mereferensikan cgi.exe dan .ini dari folder php xampp.
Terima kasih webarto telah memberikan waktu Anda untuk membantu saya.
sumber
Saya menggunakan opsenSUSE Leap, dan saya memiliki masalah yang sama - itu berarti tidak ada dukungan untuk OpenSSL. Inilah cara saya mengatasinya:
sudo service apache2 restart
Itu dia, sudah selesai.
sumber
Saya mendapat kesalahan ini juga. Saya tahu bahwa versi PHP saya tidak memiliki kompilasi openssl, jadi hanya menambahkan direktif ekstensi ke php.ini tidak cukup. Saya tidak tahu bagaimana Anda harus menyelesaikan ini dalam kasus khusus Anda, tetapi bagi saya, saya menggunakan macports, dan perintahnya adalah:
sumber
Bagi mereka yang menggunakan Winginx (berbasis nginx dan bukan berbasis Apache), saya memperbaikinya dengan 4 langkah ini:
Pada menu Alat tekan Winginx PHP5 Config (apalagi 5 dalam nama ...):
Pilih versi PHP yang Anda ingin ubah php.ini :
Pada tab Ekstensi PHP pilih ekstensi php_openssl dan tekan tombol Simpan :
restart layanan PHP yang sesuai melalui taskbar ( Stop and Start ):
sumber
Coba ini:
sumber
Jika Anda menggunakan server wamp maka buka ikon klik ini
Kemudian pergi ke PHP lalu klik pada ekstensi PHP akan ada php_openssl perlu diaktifkan dari sana dan restart server wamp
sumber
Di dalam simple_html_dom.php, ubah nilai
$offset
variabel dari-1
menjadi0
. kesalahan ini biasanya terjadi ketika Anda bermigrasi ke PHP 7.HtmlDomParser::file_get_html
menggunakan offset default-1
, melewatinya0
akan memperbaiki masalah Anda.sumber