Prinsip menghubungkan file di PHP. PHP CURL - fungsi dan contoh penggunaan include dengan mengembalikan nilai




Sepasang kacamata...

PHP tidak memiliki kerangka impor bawaan seperti python, java, atau .net. Ada beberapa cara untuk menggunakan perpustakaan di PHP.

    kompilasi menjadi biner PHP. Ini adalah metode paling canggih dan biasanya tidak disarankan kecuali Anda mempunyai kebutuhan khusus.

    Instal sebagai modul PHP di server dan aktifkan di PHP.ini. Dari sudut pandang pemrogram PHP, ekstensi ini adalah bagian dari PHP - selalu tersedia. Lebih mudah untuk menambah dan menghapus tanpa membangun kembali PHP itu sendiri.

    Instal kode PHP di server di suatu tempat dan sertakan () dalam skrip PHP Anda.

    Simpan salinan perpustakaan ke proyek Anda dan sertakan dalam skrip PHP Anda.

P a g e Pada tingkat dasar, kode tersebut merupakan bagian dari penerjemah (statis atau dinamis) atau merupakan kode PHP lama yang menyertakan() dalam proyek Anda.

Untuk keperluan Anda, saya hanya dapat menyarankan agar Anda tetap menggunakan distribusi PHP standar (pilih OS Linux yang bagus dan gunakan PHP itu). Maka hampir semua perpustakaan yang Anda perlukan di tingkat juru bahasa tersedia sebagai paket tambahan, dan kerumitannya diserahkan kepada mereka yang melakukannya setiap hari.

Di RedHat/Centos Anda dapat menjalankan:

yum instal php php-memcached php-gd php-pecl

Page Sejauh semua perpustakaan lain yang mungkin ingin Anda gunakan, mungkin yang terbaik adalah menggunakan kerangka kerja PHP yang baik yang akan menangani semua ini untuk Anda.

Beberapa contoh:

  • Kerangka Zend
  • KuePHP
  • penyala kode
  • Dll...

(tidak dalam urutan apa pun, hanya yang terlintas dalam pikiran)

Asalkan Anda telah menggunakan pendekatan standar menggunakan RPM atau serupa untuk mengelola PHP yang dikompilasi dan aspek ekstensi, maka kerangka kerja kuat yang baik akan mencakup semua kode perpustakaan PHP tambahan yang Anda perlukan.

Hasil akhirnya adalah: Anda berfokus pada penyampaian produk, bukan seluruh infrastruktur yang harus Anda pelajari dan ciptakan.

Halaman php.ini diurai dan dijalankan ketika PHP dimulai (setiap kali untuk baris perintah, satu kali per server dijalankan di Apache). Ini mendefinisikan banyak pengaturan, mencakup banyak modul, mengkonfigurasi modul-modul itu, dll.

Faktanya, Anda bisa mengganti beberapa pengaturan di php.ini menggunakan fungsi ini_set() di PHP. Namun, ini hanya berfungsi untuk beberapa pengaturan. Yang lain harus diinstal sebelum menjalankan skrip.

Saat bekerja di bawah Apache Anda dapat menambahkan baris ke .htaccess dan , yang sepenuhnya menggantikan PHP.ini untuk direktori/host virtual tersebut.

(harap perbaiki sintaksis saya dan hapus catatan ini jika salah)

Nama Server www.example.com DocumentRoot /home/joe/site/docroot php_value include_path "/home/joe/site/php-code"

Halaman Menanggapi pertanyaan Anda #6 tentang perpustakaan Anda sendiri dan cara terbaik untuk mengemasnya, saya sarankan Anda terlebih dahulu mengevaluasi kebutuhan perpustakaan. Dan jika Anda melakukan sesuatu, cari tahu cara paling umum yang dilakukan orang. Jika perpustakaannya sederhana, maka file .php dengan situs web yang bagus sudah cukup.

Halaman Mungkin sedikit bertele-tele, tapi saya harap ini mengarahkan Anda ke arah yang benar.

Secara default, ekstensi untuk bekerja dengan MySQL (perpustakaan php_mysql.dll) tidak terhubung ke PHP dan fungsi terkait tidak tersedia. Untuk menghubungkan perpustakaan, Anda perlu membuat perubahan pada file konfigurasi php.ini dan menyalin perpustakaan tambahan ke direktori c:/windows/system32.

1. Beritahu PHP (Apache) dimana php.ini berada (hanya Apache 2.x)

Jika Anda menggunakan Apache versi 2 atau lebih tinggi, pastikan untuk menambahkan direktif PHPIniDir ke file konfigurasi Apache (httpd.conf), yang memungkinkan Anda menentukan lokasi pasti file php.ini. Setelah menambahkan arahan, restart Apache dan pastikan startup berhasil.

PHPIniDir “c:/php”

Catatan

Harap dicatat bahwa jalur ditulis menggunakan garis miring /, yang tidak biasa untuk Windows, yang menggunakan garis miring terbalik \\. Faktanya adalah Apache dan PHP pada awalnya dibuat untuk bekerja pada sistem Unix, yang menggunakan garis miring. Untuk menghindari kemungkinan masalah yang sulit didiagnosis, kami sangat menyarankan penggunaan garis miring dalam format unix di file konfigurasi Apache dan PHP.

Ini mengasumsikan bahwa file konfigurasi php.ini disimpan di direktori c:/php. Untuk memastikan bahwa Apache telah menemukan file konfigurasi php.ini, jalankan fungsi phpinfo().

Mencetak informasi konfigurasi PHP

gema phpinfo();
?>

Temukan nilai baris dalam tabel ungu yang dihasilkan "Jalur File Konfigurasi (php.ini)". Itu harus menunjukkan path ke file php.ini yang digunakan, termasuk file itu sendiri. Jika baris ini hanya menentukan direktori, berarti Apache tidak dapat menemukan file php.ini.

C:/php/php.ini // Benar - php.ini ditemukan dan digunakan
C:/windows/ // Salah - php.ini tidak ditemukan

Catatan

Di Apache, versi direktif PHPIniDir sebelumnya tidak ada dan akibatnya banyak kesalahan terjadi karena lokasi file php.ini yang salah. Untuk Apache versi 1.3, php.ini harus terletak di direktori sistem Windows, biasanya: c:/Windows. Menggunakan arahan PHPIniDir di Apache versi 2 memungkinkan Anda memecahkan masalah ini secara radikal.

Setelah Anda memastikan bahwa Apache menggunakan php.ini yang benar, Anda dapat mulai mengeditnya untuk mengaktifkan ekstensi MySQL.

2. Siapkan direktif extension_dir di PHP.INI

Arahan extension_dir menentukan direktori di mana perpustakaan ekstensi php berada, termasuk perpustakaan php_mysql.dll. Jika Anda menginstal php di direktori c:/php, maka pustaka ekstensi biasanya terletak di subdirektori ext (c:/php/ext). Periksa apakah ini benar dan setel direktif extension_dir ke nilai yang benar.

Extension_dir = "c:/php/ext"

3. Hubungkan ekstensi untuk bekerja dengan MySQL

Untuk melakukan ini, temukan baris di php.ini:

;ekstensi=php_mysql.dll

Dan hapus simbol komentar darinya - titik koma.

Ekstensi=php_mysql.dll

4. Salin perpustakaan tambahan libmysql.dll ke c:/windows

Jika Anda memiliki PHP yang terhubung ke Apache sebagai modul, maka untuk menghubungkan ekstensi MySQL Anda perlu menyalin perpustakaan tambahan libmysql.dll dari direktori c:/php ke direktori c:/windows/system32. Jika php terhubung ke Apache sebagai aplikasi CGI, maka tidak perlu menyalin perpustakaan tambahan.

5. Mulai ulang Apache

Mulai ulang Apache agar semua perubahan diterapkan.

6. Periksa pemasangan ekstensi

Untuk memastikan bahwa perpustakaan MySQL telah berhasil terhubung ke PHP, jalankan fungsi phpinfo(). Lihatlah "tabel ungu" dan temukan bagian di dalamnya yang disebut MySQL. Jika bagian seperti itu ada, berarti ekstensi berhasil dihubungkan.

Memeriksa interaksi PHP dengan MySQL

1. Periksa apakah server MySQL Anda sedang berjalan.

Sebelum Anda mulai menguji interaksi PHP dengan MySQL, pastikan server MySQL Anda berjalan. Hal ini dapat dilakukan dengan membuka daftar layanan Windows: "Mulai" | "Panel Kontrol" | "Administrasi" | "Jasa". Temukan layanan bernama MySQL dan pastikan layanan tersebut dalam keadaan berjalan (kolom ketiga tabel).

Cara kedua untuk memastikan server MySQL berjalan: tekan tombol “Crtl” + “Alt” + “Del” dan di tab “Processes”, temukan proses bernama mysqld.exe. Proses berikut ini juga dapat berfungsi sebagai pengganti proses mysqld.exe: mysqld-nt.exe, mysqld-max-nt.exe, mysqld-debug.exe.

2. Jalankan skrip pengujian php

$dblokasi = "127.0.0.1" ;
$namadb = "tes" ;
$dbuser = "akar" ;
$dbpasswd = "" ;

$dbcnx = mysql_connect ($lokasi db, $dbuser, $dbpasswd);
jika (! $dbcnx )
{
gema "" ;
KELUAR();
}
jika (!

{
gema "" ;
KELUAR();
}

jika(!$ver)
{
gema "

Kesalahan dalam permintaan

" ;
KELUAR();
}
gema
mysql_result($ver, 0);
?>

Jika pengujian berhasil, nomor versi server MySQL akan ditampilkan di layar. Jika tidak, deskripsi kesalahan yang terjadi akan ditampilkan di layar.

Kesalahan saat menghubungkan ekstensi untuk bekerja dengan MySQL

Kesalahan seperti: Panggilan ke fungsi yang tidak ditentukan

Semua kesalahan yang mengandung frasa “Panggil ke fungsi yang tidak ditentukan” menunjukkan ekstensi PHP yang tidak terhubung. Jika kesalahan seperti itu terjadi saat bekerja dengan fungsi MySQL, ini berarti perpustakaan PHP untuk bekerja dengan MySQL - php_mysql.dll - tidak disertakan

Contoh pesan kesalahan:

Kesalahan fatal: Panggilan ke fungsi yang tidak ditentukan mysql_connect()

Untuk mengatasi masalah ini, silakan merujuk ke awal artikel.

Tidak ada blok MySQL di phpinfo()

Jika semuanya dilakukan dengan benar, tetapi ekstensi untuk bekerja dengan MySQL tidak terhubung dan bahkan blok MySQL tidak ada dalam output fungsi phpinfo(), maka periksa versi perpustakaan libmysql.dll yang terletak di c:/windows/ sistem32.

  1. Bandingkan ukuran perpustakaan libmysql.dll, yang terletak di c:/windows/system32, dengan ukuran perpustakaan dengan nama yang sama, yang diinstal dengan PHP. Mereka harus setara.
  2. Temukan perpustakaan libmysql.dll melalui direktori c:/windows dan semua subdirektori. Hapus semua duplikat yang ditemukan dan sisakan hanya satu perpustakaan yang diperlukan - perpustakaan yang disalin dari direktori c:/php.

Catatan

Pustaka libmysql.dll dengan nama yang sama juga disertakan dengan server MySQL. Namun, ini adalah perpustakaan yang berbeda dan jika direktori c:/windows/system32 berisi perpustakaan dari MySQL, maka PHP tidak akan dapat menghubungkan ekstensi tersebut. Pustaka libmysql.dll dapat disalin secara otomatis ke c:/windows/system32 saat menginstal server MySQL. Kehadiran perpustakaan dari PHP versi lama di direktori sistem juga bisa menjadi kendala.

Halaman skrip pengujian kosong

Skrip yang ditunjukkan pada daftar di bawah ini sering digunakan sebagai skrip untuk menguji interaksi PHP dengan MySQL di website kami. Perbedaannya dengan skrip PHP serupa yang diberikan di awal artikel adalah simbol @ sebelum memanggil fungsi mysql_connect() dan mysql_select_db(). Karakter ini digunakan untuk menyembunyikan keluaran kesalahan pada browser. Mereka berguna untuk digunakan di situs web yang berfungsi di Internet untuk mencegah informasi rahasia ditampilkan di browser, tetapi saat men-debug skrip, tidak perlu melarang keluaran kesalahan, karena hal ini dapat mempersulit diagnosis masalahnya.

Skrip PHP yang menguji interaksi PHP dengan server MySQL

$dblokasi = "127.0.0.1" ;
$namadb = "tes" ;
$dbuser = "akar" ;
$dbpasswd = "" ;

$dbcnx = @mysql_connect ($lokasi db, $dbuser, $dbpasswd);
jika (! $dbcnx )
{
gema "

Sayangnya, server mySQL tidak tersedia

" ;
KELUAR();
}
jika (!@
mysql_select_db ($nama db, $dbcnx))
{
gema "

Sayangnya, databasenya tidak tersedia

"
;
KELUAR();
}
$ver = mysql_query("PILIH VERSI()" );
jika(!$ver)
{
gema "

Kesalahan dalam permintaan

"
;
KELUAR();
}
gema
mysql_result($ver, 0);
?>

Jika, sebagai hasil dari menjalankan skrip ini, halaman kosong ditampilkan, biasanya ini berarti perpustakaan php_mysql.dll tidak terhubung ke PHP. Untuk mendiagnosis masalah dengan lebih akurat, lakukan rangkaian tindakan berikut.

  1. Pastikan skrip PHP lain yang tidak menggunakan database MySQL sedang berjalan.
  2. Hapus simbol @ sebelum memanggil fungsi mysql_connect dan mysql_select, yang digunakan untuk menekan keluaran kesalahan ke browser. Setelah itu, informasi lebih lengkap tentang kesalahan akan ditampilkan di browser, yang akan membantu menyelesaikan masalah.

Kesalahan: Tidak dapat terhubung ke server MySQL di "127.0.0.1" (10061)

Jika, saat menjalankan skrip pengujian PHP, muncul kesalahan seperti berikut:


Tidak dapat terhubung ke server MySQL pada "127.0.0.1" (10061)
di C:\www\panel\htdocs\test.php pada baris 7

Ini menunjukkan bahwa server database MySQL tidak berjalan. Diagnosis yang lebih akurat untuk masalah ini diberikan di atas pada paragraf 1 subbagian “Memeriksa interaksi PHP dengan MySQL”.

Kesalahan: Akses ditolak untuk pengguna "root"@"localhost" (menggunakan kata sandi: YA)

Mengalami kesalahan berikut:

Peringatan: mysql_connect() :
Akses ditolak untuk pengguna "root"@"localhost" (menggunakan kata sandi: YA)
di C:\www\panel\htdocs\test.php pada baris 7

Menunjukkan bahwa Anda mencoba menyambung ke database MySQL dengan kata sandi yang salah. Periksa nilai variabel $dbpasswd dalam skrip pengujian. Secara default, server MySQL diinstal dengan kata sandi pengguna root yang kosong. Jika Anda menetapkan sendiri kata sandi untuk pengguna root, tuliskan kata sandi tersebut ke dalam variabel $dbpasswd pada skrip verifikasi.

Anda dapat mengajukan pertanyaan apa pun tentang menghubungkan ke ekstensi PHP untuk digunakan di forum kami yang didedikasikan untuk menginstal dan mengonfigurasi Apache, PHP, dan perpustakaan ekstensi.

Catatan: Versi adaptif situs diaktifkan, yang secara otomatis menyesuaikan dengan ukuran kecil browser Anda dan menyembunyikan beberapa detail situs agar mudah dibaca. Selamat menonton!

Hari baik untuk semua pembaca blog Lokasi pada! Selama 2 bulan terakhir, pekerjaan saya di perusahaan sangat erat kaitannya dengan PHP murni (penggunaan framework dan CMS itu tabu), saya sudah lupa apa itu Joomla :) jadi akan lebih tepat untuk terus menulis lebih tinggi.

Hari ini kita akan berbicara tentang cara kerja menghubungkan file di PHP. Seperti yang mungkin Anda perhatikan, mesin apa pun untuk situs web (Joomla, Wordpress, OpenCart, DLE, dan semuanya) terdiri dari ribuan file .php (dan bukan hanya php) dan semuanya berinteraksi satu sama lain, yang sebenarnya membentuk situs mekanisme kerja.

Sekarang lupakan mesinnya dan bayangkan contoh lain: kita memiliki banyak halaman di situs, masing-masing memiliki menu, header, dan footer situs yang sama. Tentu saja, kami tidak akan menyalin hal yang sama dari satu file ke file lainnya, jika tidak maka akan menjadi situs HTML kuno dari tahun 90an. Minimal, kami akan membagi semuanya menjadi 4 file:

  • index.php – bagian utama halaman, file ini akan berubah
  • menu.php – menu situs
  • header.php – tajuk situs
  • footer.php – footer situs

Selain halaman utama (index.php), misalnya, kita mungkin juga memiliki halaman dengan daftar produk (category.php) dan halaman produk itu sendiri (product.php). Akan lebih mudah untuk menghubungkan file menu.php, header.php, footer.php ke halaman ini. Berkat pendekatan ini, jika kita menambahkan item menu baru, kita hanya akan menambahkannya satu kali (di menu.php), dan bukan 3 kali (di index.php, product.php, kategori.php).

Oleh karena itu timbul pertanyaan: "Bagaimana cara melampirkan file di PHP?". Untuk tujuan ini, ada 2 instruksi di PHP:

Dan turunannya:

Saya menarik perhatian Anda pada fakta bahwa include dan require bukanlah fungsi, ini disebut konstruksi bahasa, jadi tanda kurung tidak diperlukan.

Apa perbedaan antara menyertakan dan membutuhkan

termasuk Dan memerlukan- ini benar-benar sama, satu-satunya perbedaan adalah jika ada kesalahan (misalnya, jika file yang ditentukan tidak ada dan tidak dapat disertakan), penyertaan akan menghasilkan kesalahan seperti Peringatan, setelah itu situs akan terus berfungsi, dan memerlukan surat wasiat , yang akan menghentikan pemuatan halaman lebih lanjut sepenuhnya.

Artinya, tuntutan instruksinya lebih radikal dan ketat. Terserah Anda untuk memutuskan apa yang terbaik untuk digunakan; pada umumnya, mereka selalu menyarankan untuk memilih opsi yang lebih ketat, yaitu mengharuskan, tetapi secara pribadi, menurut saya lebih menyenangkan mengetik kata include :)

include_once dan require_once – melakukan hal yang sama seperti include (menyertakan file), namun pada saat yang sama memastikan bahwa setiap file disertakan tidak lebih dari satu kali. Mereka sangat nyaman digunakan jika beberapa orang sedang mengerjakan sebuah proyek dan Anda perlu memastikan bahwa file tertentu tidak ditambahkan beberapa kali.

Perhatian:

sertakan_sekali Dan memerlukan_sekali– lebih lambat dan mengonsumsi lebih banyak RAM daripada yang disertakan dan dibutuhkan. Ini logis dan karena mereka harus mengingat semua file yang terhubung dan setiap kali mereka terhubung, periksa apakah file ini sudah terhubung.

Izinkan saya mengilustrasikan dengan jelas cara kerja menghubungkan file di PHP:

Saat menghubungkan file (apa saja, misalnya: html, txt, php, xml, dll.) ke skrip PHP, isinya dengan bodohnya dimasukkan sebagai pengganti penyertaan. Dengan kata lain, include (dan maksud saya juga memerlukan, karena keduanya sama) sama seperti jika Anda menyalin kode (CTRL+C) dari suatu tempat dan menempelkan (CTRL+V) ke dalam file (misalnya, product. php), lalu disimpan dan diluncurkan seperti biasa: http://your_site.net/product.php

Untuk membedakan file utama, misalnya product.php, dengan file yang kita sambungkan (menu.php, header.php, footer.php), file yang terhubung diganti namanya seperti ini: menu.inc.php, header .inc.php , footer.inc.php. Berkat ini, ketika kita masuk ke suatu folder, kita akan langsung melihat di mana file utama berada dan di mana file tambahan berada.

Perhatian:

Teknik ini (add inc) hanya digunakan untuk kenyamanan visual dan tidak membawa perbedaan fungsional apa pun. Namun kenyamanan visual juga sangat penting, jadi usahakan untuk selalu menyusun segala sesuatunya dan melakukannya dengan gaya yang sama.

sertakan dengan nilai kembalian

Ingat kata kuncinya? Jadi di PHP ada hal yang liar seperti return inside include. Saya belum pernah menggunakan ini dan saya belum pernah melihat orang lain menggunakannya, tapi mungkin saja, ini some.php:

Hubungkan beberapa.php:

// Mencetak string: PHP ?>

Beberapa fakta lagi

  • Anda dapat memasukkan file di mana saja dalam kode PHP, termasuk di dalam;
  • Penyertaan (include) dipicu selama eksekusi skrip, tidak ada yang terjadi pada file yang disertakan sebelumnya;
  • File yang disertakan sama dengan baris tempat penyertaan dideklarasikan. Artinya, jika suatu tempat di tengah-tengah file, maka lingkup global, dan jika di dalam suatu fungsi, maka lingkup lokal. Izinkan saya menekankan sekali lagi bahwa penyertaan sama seperti jika Anda mengambil dan menyalin kode ke dalam file sebagai pengganti penyertaan.

Terima kasih semuanya atas perhatian Anda dan semoga akhir pekan Anda menyenangkan!

Igor Guzey

Ini bukanlah instruksi tindakan yang pasti dan definitif dengan menggunakan istilah yang benar dan pilihan yang optimal. Ini lebih merupakan catatan dari masalah saat ini.

Tugas: Tambahkan dukungan/modul GD2 ke PHP

Seperti biasa, kami memulai pelatihan di komputer lokal, dan tentu saja berjalan di Windows. Lebih tepatnya Windows XP SP2. Selanjutnya, mari sambungkan GD2 di PHP, dikonfigurasi melalui port atau dikompilasi secara manual untuk FreeBSD.

Menghubungkan GD2 ke PHP di Windows

Kami menemukan dalam distribusi:
\php-4.3.9-Win32.zip\php-4.3.9-Win32\extensions\
perpustakaan php_gd2.dll, mis. versi 2.
dan salin php_gd2.dll ke c:\windows
di file c:\windows\php.ini kami menemukan baris extension=php_gd2.dll dan menghapus komentar.
Mulai ulang Apache. Semua.

Jika Anda secara naif menghapus komentar di php.ini terlebih dahulu dan berpikir itu sudah cukup, maka setelah me-restart Apache, diagnostik akan muncul:
"Tidak dapat memuat perpustakaan dinamis "./php_gd.dll" - Modul yang ditentukan tidak ditemukan."

Menghubungkan GD2 ke PHP di FreeBSD

PHP sudah diinstal dari port

Lebih tepatnya, tidak hanya PHP, tetapi secara umum semuanya (php, MySQL, Apache, ...) dikonfigurasi menggunakan port.

# cd /usr/ports/lang/php4-extensions # make config tambahkan kotak centang: "Dukungan perpustakaan GD" # make deinstall # make install ulang # apachectl -k anggun soft restart atau # apachectl restart rough restart

PHP dibuat dengan tangan

Dalam hal ini, diperlukan pekerjaan awal untuk menyiapkan JPEG dan ZLIB

Menginstal dukungan JPEG

Opsi yang memungkinkan

JPEG dari porta
# cd /usr/ports/graphics/jpeg # buat direktori yang didapat berfungsi/jpeg-6b jangan buat make install
JPEG dari distribusi
# cd /usr/dist/ # wget ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz # gunzip -c jpegsrc.v6b.tar.gz | tar xf - # cd /usr/dist/jpeg-6b # ./configure # make

Anda perlu menginstal dukungan zlib

Dari pelabuhan
# cd /usr/ports/archivers/php4-zlib # make Libraries telah diinstal di: /usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules

Kompilasi PHP

# cd /usr/dist/php-4.4.4 # ./configure --with-mysql --with-Apache=/usr/dist/Apache_1.3.37 --enable-memory-limit --with-gd tanpa menentukan a direktori Perpustakaan GD yang dibangun ke dalam PHP diinstal. --with-jpeg-dir=/usr/ports/graphics/jpeg/work/jpeg-6b jika jpeg berasal dari port atau /usr/dist/jpeg-6b jika jpeg berasal dari distribusi --with-zlib-dir =/ usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules # make install && make clean

Pengujian

gif.php:png.phpjpg.php:gd_info.php:
KUNCI VAL$val) gema "
$kunci $val"; ?>



Melewati kesalahan

Saat menginstal perpustakaan JPEG, setelah "make" perintah "make install" dibuat dengan harapan bahwa file baru akan masuk ke /usr/local dan kemudian secara otomatis ditemukan di sana

# ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd --with-jpeg-dir --with-zlib-dir= /usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules

Tapi entah kenapa JPEG tidak terhubung. Tidak ada diagnosis negatif dan tidak ada hasil.

Karena kebodohan, saya melihat-lihat seperti anak kucing buta, mencoba menjelaskannya ke sana kemari. Baik melalui semua yang ada di dalamnya, lalu melalui unduhan, lalu dari port. Semua aib ini disertai dengan instalasi yang tidak perlu, yang mengakibatkan masalah yang menyebabkan kesalahan pada saat instalasi PHP:

# ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local Terima kasih telah menggunakan PHP. # make install /usr/dist/php-4.4.4/ext/gd/gd.c:1151: referensi tidak terdefinisi ke `gdImageRotate" sementara direktori untuk GD tampaknya ditentukan, tetapi diagnostik merujuk ke direktori bawaan ./configure - -dengan-mysql --dengan-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local --dengan-jpeg-dir=/ usr/local --with -png-dir=/usr/local --with-zlib-dir=/usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules Terima kasih atas menggunakan PHP # make install ... /usr/dist/php-4.4.4/ext/gd/gd.c:837: referensi tidak terdefinisi ke `gdImageColorMatch" /usr/dist/php-4.4.4/ext/gd /gd.c:1151 : referensi tidak terdefinisi ke `gdImageRotate" *** Kode kesalahan 1

Mencoba mempersiapkan semua modul secara terpisah dan menunjukkannya dengan tepat.

Saya mengusulkan untuk berbicara sedikit tentang bahasa pemrograman PHP, dan secara khusus menyentuh topik ekstensi KERITING, yaitu kemampuan untuk berinteraksi dengan server yang berbeda menggunakan protokol yang berbeda dari skrip PHP itu sendiri.

Sebelum kita mulai melihat curl, saya ingin mengingatkan Anda bahwa kita telah menyentuh bahasa PHP, misalnya pada materi tentang mengunggah ke Excel dalam PHP atau kemampuan untuk mengautentikasi dalam PHP, dan sekarang mari kita bicara tentang kemampuan untuk mengirim permintaan ke PHP.

Apa itu CURL?

KERITING adalah pustaka fungsi PHP yang dapat digunakan untuk mengirim permintaan, seperti HTTP, dari skrip PHP. CURL mendukung protokol seperti HTTP, HTTPS, FTP dan lain-lain. Anda dapat mengirim permintaan HTTP menggunakan metode GET, POST, dan PUT.

CURL dapat berguna jika Anda perlu memanggil skrip jarak jauh dan mendapatkan hasilnya, atau sekadar menyimpan kode HTML dari halaman yang dipanggil, secara umum, semua orang dapat menemukan kegunaannya, tetapi intinya adalah Anda dapat mengirim permintaan saat skrip sedang berlari.

Menghubungkan perpustakaan CURL di PHP

Untuk menggunakan perpustakaan CURL, Anda harus menghubungkannya sesuai kebutuhan.

Catatan! Sebagai contoh, kita akan menggunakan PHP 5.4.39 pada Windows 7, dan kita akan menggunakan Apache 2.2.22 sebagai server Web.

Hal pertama yang perlu Anda lakukan adalah menyalin perpustakaan ssleay32.dll, libeay32.dll, libssh2.dll mereka berada di direktori dengan PHP, di direktori sistem Windows, yaitu di C:\Windows\System32.

Kemudian sambungkan perpustakaan php_curl.dll ke php.ini, mis. batalkan komentar pada baris berikutnya

Perpustakaan tidak terhubung

;ekstensi=php_curl.dll

Perpustakaan terhubung

Ekstensi=php_curl.dll

Itu saja, restart Apache, panggil fungsi phpinfo() dan jika koneksi berhasil, Anda akan memiliki bagian curl


Jika tidak ada, maka ini hanya berarti satu hal: perpustakaan tidak dimuat; alasan paling umum untuk ini adalah karena DLL di atas tidak disalin ke direktori sistem Windows.

Contoh CURL - meminta halaman jarak jauh untuk ditampilkan di layar

Dalam contoh ini, kita hanya akan meminta halaman jarak jauh melalui HTTP menggunakan metode GET dan menampilkan isinya di layar.

Kami memiliki direktori test yang didalamnya terdapat 2 file PHP: test_curl.php dan test.php, dimana test_curl.php adalah script dimana kita akan menggunakan curl, dan test.php adalah script remote yang akan kita panggil. Saya mengomentari kode secara detail.

Kode test_curl.php

Tes kode.php

Judul 1"; istirahat; kasus 2: gema "<Н2>Judul 2"; istirahat; kasus 3: gema "<Н3>Pos 3"; istirahat; ) ) ?>

Hasilnya, jika Anda menjalankan test_curl.php Anda akan melihat pesan “Heading 1” di layar, Anda dapat bereksperimen dengan meneruskan parameter id ( dalam hal ini 2 atau 3).

Contoh CURL - memanggil skrip jarak jauh dan mendapatkan hasilnya

Sekarang mari kita coba memanggil script tersebut dan mendapatkan hasilnya, untuk diproses nanti, misalnya kita menggunakan metode POST. Biarkan nama file tetap sama.

Kode test_curl.php

Tes kode.php

Dan jika kita menjalankan test_curl.php, maka 111 akan ditampilkan di layar, mis. 1.11 diperoleh dari mengakses skrip jarak jauh, dikalikan 100.

Sekarang mari kita bicara tentang fungsi dan konstanta mereka.

Fungsi dan konstanta CURL yang umum digunakan

  • curl_init - Menginisialisasi sesi;
  • curl_close - Menutup sesi;
  • curl_exec - Menjalankan permintaan;
  • curl_errno - Mengembalikan kode kesalahan;
  • curl_setopt - Menetapkan parameter untuk sesi, misalnya:
    • CURLOPT_HEADER – nilai 1 berarti header harus dikembalikan;
    • CURLOPT_INFILESIZE - parameter untuk menentukan ukuran file yang diharapkan;
    • CURLOPT_VERBOSE - nilai 1 berarti CURL akan menampilkan pesan rinci tentang semua operasi yang dilakukan;
    • CURLOPT_NOPROGRESS – menonaktifkan indikator kemajuan operasi, nilai 1;
    • CURLOPT_NOBODY – jika Anda tidak memerlukan dokumen, tetapi hanya membutuhkan header, maka atur nilainya menjadi 1;
    • CURLOPT_UPLOAD - untuk mengunggah file ke server;
    • CURLOPT_POST – menjalankan permintaan menggunakan metode POST;
    • CURLOPT_FTPLISTONLY — mendapatkan daftar file di direktori server FTP, nilai 1;
    • CURLOPT_PUT — menjalankan permintaan menggunakan metode PUT, nilai 1;
    • CURLOPT_RETURNTRANSFER - mengembalikan hasilnya tanpa mengeluarkannya ke browser, nilai 1;
    • CURLOPT_TIMEOUT – waktu eksekusi maksimum dalam hitungan detik;
    • CURLOPT_URL – menentukan alamat kontak;
    • CURLOPT_USERPWD - string dengan nama pengguna dan kata sandi berupa :;
    • CURLOPT_POSTFIELDS – data untuk permintaan POST;
    • CURLOPT_REFERER - menetapkan nilai header HTTP “Referer:”;
    • CURLOPT_USERAGENT - menetapkan nilai header HTTP “Agen-Pengguna:”;
    • CURLOPT_COOKIE — isi header “Cookie:” yang akan dikirim bersama permintaan HTTP;
    • CURLOPT_SSLCERT - nama file dengan sertifikat dalam format PEM;
    • CURLOPT_SSL_VERIFYPEER – nilai 0, untuk menonaktifkan verifikasi sertifikat server jarak jauh (default 1);
    • CURLOPT_SSLCERTPASSWD — kata sandi untuk file sertifikat.
  • curl_getinfo - Mengembalikan informasi tentang operasi, parameter kedua dapat berupa konstanta untuk menunjukkan apa yang sebenarnya perlu ditampilkan, misalnya:
    • CURLINFO_EFFECTIVE_URL - URL yang terakhir digunakan;
    • CURLINFO_HTTP_CODE - kode HTTP terakhir diterima;
    • CURLINFO_FILETIME — tanggal modifikasi dokumen yang dimuat;
    • CURLINFO_TOTAL_TIME — waktu pelaksanaan operasi dalam hitungan detik;
    • CURLINFO_NAMELOOKUP_TIME — waktu resolusi nama server dalam hitungan detik;
    • CURLINFO_CONNECT_TIME — waktu yang dihabiskan untuk membuat koneksi, dalam hitungan detik;
    • CURLINFO_PRETRANSFER_TIME — waktu yang berlalu dari awal pengoperasian hingga kesiapan untuk transfer data aktual, dalam hitungan detik;
    • CURLINFO_STARTTRANSFER_TIME — waktu yang berlalu dari awal operasi hingga byte pertama data ditransfer, dalam hitungan detik;
    • CURLINFO_REDIRECT_TIME — waktu yang dihabiskan untuk pengalihan, dalam hitungan detik;
    • CURLINFO_SIZE_UPLOAD - jumlah byte saat diunggah;
    • CURLINFO_SIZE_DOWNLOAD - jumlah byte saat diunduh;
    • CURLINFO_SPEED_DOWNLOAD - kecepatan unduh rata-rata;
    • CURLINFO_SPEED_UPLOAD - kecepatan unduh rata-rata;
    • CURLINFO_HEADER_SIZE - ukuran total semua header yang diterima;
    • CURLINFO_REQUEST_SIZE - ukuran total semua permintaan yang dikirim;
    • CURLINFO_SSL_VERIFYRESULT - hasil pengecekan sertifikat SSL yang diminta dengan mengatur parameter CURLOPT_SSL_VERIFYPEER;
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD - ukuran dokumen yang diunduh, dibaca dari header Content-Length;
    • CURLINFO_CONTENT_LENGTH_UPLOAD - ukuran data yang diunggah;
    • CURLINFO_CONTENT_TYPE - isi header tipe Konten yang diterima, atau NULL jika header ini tidak diterima.

Anda dapat mengetahui lebih lanjut tentang fungsi CURL dan konstanta mereka di situs web resmi PHP -