Mempersiapkan:
- CURL 7.32.0
- Apache 2.2.25
- PHP 5.5.4
Setiap kali saya mencoba untuk:
$ch = curl_init('www.google.com');
curl_exec($ch);
var_dump(curl_error($ch));
dalam PHP, saya mendapatkan:
Tidak dapat menyelesaikan host: www.google.com
Jika saya berubah menjadi curl_init('80.233.168.207')
(diselesaikan google.com), skrip dijalankan.
Padahal, berlari curl www.google.com
di CLI, saya mendapatkan 302 Moved
Halaman HTML, karena mengarahkan ulang ke situs yang dilokalkan (* .lv), tetapi tetap saja, itu berarti bahwa cURL berhasil dijalankan.
Saya telah melihat beberapa pertanyaan serupa (bukan pada SE), kebanyakan dari mereka mengatakan bahwa Apache dimulai sebelum atau bersamaan dengan Network Manager, karenanya tidak menerima informasi DNS. Sebagian besar pertanyaan memiliki jawaban yang menjelaskan, bahwa masalah ini dapat sementara diselesaikan / di-debug dengan menghentikan secara eksplisit, kemudian memulai daemon Apache (bukan restart / anggun-restart).
fsockopen
, file_get_contents
bekerja dengan sempurna, meskipun.
Tuan rumah virtual Apache saya:
<VirtualHost *.777>
ServerAdmin [email protected]
ServerName localhost
DocumentRoot "/srv/stone/public"
ErrorLog "/srv/stone/app/storage/logs/apache-errors.log"
CustomLog "/srv/stone/app/storage/logs/apache-custom.log" common
<Directory /srv/stone/public>
php_admin_value open_basedir /
# Pretty URL rewrites, better not to rely on .htaccess
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
# Prevent further overrides
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Dan konfigurasi global hanya memiliki entri khusus untuk Listen 777
.
Ini dan ini , keduanya mengarah ke masalah DNS, jadi, saya pikir saya mungkin punya masalah dengan itu juga, ditambah, jelas terlihat seperti itu.
Saya telah mencoba dengan mengubah entri host virtual menjadi 0.0.0.0:777
dan konfigurasi lainnya tidak berhasil.
Bagaimana cara memperbaiki masalah ini?
sumber
80.233.168.207 www.google.com
di Anda/etc/hosts
Anda harus dapat mengonfirmasi bahwa ini adalah masalah DNS. Agak aneh bahwa perintah CLI Anda berhasil melakukan pencarian. FYI, kodenya berfungsi pada sayaApache
instalasi.Jawaban:
Tampaknya masalahnya dengan saya
/etc/resolv.conf
.Saya telah mengatur manajer koneksi jaringan kustom, yang menjalankan perintah eksternal untuk mengatur server nama dari file konfigurasi tertentu. Setup hanya akan menghapus konten
/etc/resolv.conf
, tambahkan dengan info baru dan kemudian mulai antarmuka jaringan, atur parameternya (IP, Mask, Cast, Gate) dan voila.Rupanya itu mengacaukan sesuatu. Saya kira saya harus mencari target Sebelum / Setelah yang berbeda dan menulis kebiasaan
resolv.conf
pembaru.Saya memang pergi
resolv.conf
statis sekarang, dan itu tampaknya memperbaiki masalah.Pada akhirnya, jelas ini adalah masalah DNS. Untungnya, sudah diperbaiki.
sumber
Sudahkah Anda mencoba opsi CURL_IPRESOLVE_V4?
Dan apa output dari header jika Anda menggunakan opsi CURLOPT_HEADER?
sumber
Could not resolve host
. Saya sudah mencoba opsi IPRESOLVE_V4 sebelumnya, tidak berhasil. Lakukan sekarang lagi, tidak ada ...80.233.168.207
. Ini tidak sama dengan Andawww.google.com
. Di sinicurl_info
memberi74.125.132.106
sebagaiprimary_ip
diwww.google.com
. bisakah kamu mencobacurl_init('74.125.132.106')
? Apa hasil yang Anda dapatkan? Sini80.233.168.207
langsung ke google.com tanpa memberikanpage is moved
. Apakah kamu sudah mencobacurl 80.233.168.207
dancurl 74.125.132.106
di CLI? (ini semua bisa menjadi masalah pelokalan tetapi Anda dapat mencoba)curl -v 80.233.168.207
dancurl -v 74.125.132.106
di CLI saya mendapatkan200 OK
. Dengancurl www.google.com
saya mendapatkan302 Found
. Sama dengan Curl di PHP.ping www.google.com
memberi saya74.125.132.147
.