Нэмэлт сангуудыг PHP скрипттэй хэрхэн холбох вэ. PHP номын сангийн суулгацыг ойлгох. PHP аль хэдийн портуудаас суулгасан

Жич:Сайтын дасан зохицох хувилбар идэвхжсэн бөгөөд энэ нь таны хөтөчийн жижиг хэмжээтэй автоматаар дасан зохицож, уншихад хялбар болгох үүднээс сайтын зарим мэдээллийг нуудаг. Таалан соёрхоно уу!

Бүх блог уншигчдад энэ өдрийн мэнд хүргэе Сайтдээр!

Сүүлийн 2 сарын хугацаанд компанид хийсэн ажил маань цэвэр PHP-тэй нягт холбоотой байсан (фрэймворк ашиглах ба CMS нь хориотой), би Joomla гэж юу байдгийг аль хэдийн мартчихсан :) тиймээс цааш үргэлжлүүлэн бичих нь илүү тохиромжтой байх болно.

Өнөөдөр бид PHP дээр файлуудыг хэрхэн холбох талаар ярилцах болно. Таны анзаарсанчлан вэбсайтад зориулсан ямар ч хөдөлгүүр (Joomla, Wordpress, OpenCart, DLE болон бүх зүйл, бүх зүйл, бүх зүйл) олон мянган .php (зөвхөн php биш) файлуудаас бүрддэг бөгөөд тэдгээр нь бүгд бие биетэйгээ харилцан үйлчилдэг бөгөөд энэ нь үнэндээ үүсдэг. ажлын механизмын талбай.

  • Одоо хөдөлгүүрүүдийн талаар мартаж, өөр нэг жишээг төсөөлөөд үз дээ: бид сайт дээр олон хуудастай, тус бүр нь ижил цэстэй, сайтын толгой, хөлтэй. Мэдээжийн хэрэг, бид ижил зүйлийг файлаас файл руу хуулахгүй, эс тэгвээс энэ нь 90-ээд оны эртний HTML сайт болж хувирах болно. Хамгийн багадаа бид бүгдийг 4 файл болгон хуваах болно:
  • index.php – хуудасны үндсэн хэсэг, энэ файл өөрчлөгдөх болно
  • menu.php – сайтын цэс
  • header.php – сайтын толгой хэсэг

footer.php – сайтын хөл хэсэг

Жишээлбэл, үндсэн хуудаснаас (index.php) гадна бид бүтээгдэхүүний жагсаалт (category.php) болон бүтээгдэхүүний өөрийнх нь хуудас (product.php) бүхий хуудастай байж болно. Menu.php, header.php, footer.php файлуудыг эдгээр хуудсанд холбоход тохиромжтой байх болно. Энэ аргын ачаар бид шинэ цэсийн зүйл нэмбэл 3 удаа биш (index.php, product.php,category.php) биш зөвхөн нэг удаа (menyu.php дээр) нэмэх болно. Тиймээс асуулт гарч ирнэ:"PHP дээр хэрхэн файл хавсаргах вэ?"

. Эдгээр зорилгын үүднээс PHP дээр 2 заавар байдаг:

Мөн тэдгээрийн деривативууд:

оруулах, шаардах нь функц биш, эдгээр нь хэлний бүтэц гэж нэрлэгддэг тул хаалт хэрэггүй гэдгийг би та бүхний анхаарлыг татаж байна.

Орох, шаардах хоёрын ялгаа юу вэоруулах Тэгээдшаарддаг - энэ нь яг ижил зүйл бөгөөд хэрэв алдаа гарвал (жишээлбэл, заасан файл байхгүй бөгөөд үүнийг оруулах боломжгүй бол) оруулах нь дараах алдаа үүсгэдэг.Анхааруулга

Өөрөөр хэлбэл, шаардлагатай заавар нь илүү радикал, хатуу байдаг. Юуг ашиглах нь өөрөө л шийднэ, үргэлж илүү хатуу, өөрөөр хэлбэл шаарддаг сонголтыг сонгохыг зөвлөж байна, гэхдээ би хувьдаа энэ үгийг бичих нь илүү тааламжтай гэж бодож байна :)

include_once болон require_once – оруулах (файлыг оруулах)-тай ижил зүйлийг хийх боловч тэр үед файл бүрийг нэгээс илүүгүй удаа оруулсан эсэхийг шалгана. Хэд хэдэн хүн төсөл дээр ажиллаж байгаа бол тэдгээрийг ашиглахад илүү тохиромжтой бөгөөд та тодорхой файлыг хэд хэдэн удаа нэмээгүй эсэхийг шалгах шаардлагатай.

Анхаар:

нэг удаа оруулахоруулах нэг удаа шаардах- удаан ажиллаж, илүү их хэрэглэх RAMоруулах, шаардахаас илүү. Энэ нь логик бөгөөд тэдгээр нь холбогдсон бүх файлуудыг санаж байх ёстой бөгөөд холбогдох бүрдээ энэ файл аль хэдийн холбогдсон эсэхийг шалгадагтай холбоотой юм.

PHP дээр файлуудыг холбох хэрхэн ажилладагийг тодорхой харуулъя:

Файлуудыг (жишээлбэл: html, txt, php, xml гэх мэт) PHP скрипттэй холбохдоо тэдгээрийн агуулгыг оруулахын оронд тэнэг байдлаар оруулдаг. Өөрөөр хэлбэл, оруулах (мөн би бас шаардах гэсэн үг, учир нь тэдгээр нь ижил зүйл) гэдэг нь та хаа нэгтээгээс (CTRL+C) кодыг хуулж аваад (CTRL+V) файлд (жишээ нь, бүтээгдэхүүн) буулгасантай адил юм. php), дараа нь хадгалаад ердийнхөөрөө эхлүүлсэн: http://your_site.net/product.php

product.php гэх мэт үндсэн файлуудыг бидний холбогддог файлуудаас (menu.php, header.php, footer.php) ялгахын тулд холбогдсон файлуудын нэрийг дараах байдлаар өөрчилсөн: menu.inc.php, header. .inc.php , footer.inc.php. Үүний ачаар бид хавтас руу ороход үндсэн файлууд хаана, туслах файлууд хаана байгааг шууд харах болно.

Анхаар:

Энэхүү техник (add inc) нь зөвхөн харааны ая тухыг хангах зорилгоор ашиглагддаг бөгөөд ямар ч функциональ ялгаа байхгүй. Гэхдээ харааны тав тухтай байдал нь бас маш чухал тул бүх зүйлийг үргэлж зохион байгуулж, ижил хэв маягаар хийхийг хичээ.

буцаах утгатай оруулах

Санаж байна уу түлхүүр үг? Тэгэхээр РНР-д return дотор оруулах гэх мэт зэрлэг зүйл байдаг. Би үүнийг хэзээ ч ашиглаж байгаагүй бөгөөд бусад хүмүүс үүнийг хэзээ ч ашиглаж байгаагүй, гэхдээ энэ нь боломжтой, энд some.php байна:

Some.php-г холбоно уу:

// Мөрийг хэвлэнэ: PHP ?>

Өөр хэдэн баримт

  • Та файлуудыг PHP кодын аль ч хэсэгт, түүний дотор ;
  • Оруулах (include) нь скриптийг гүйцэтгэх явцад идэвхждэг.
  • Оруулсан файл нь оруулахыг зарласан мөртэй ижил байна. Өөрөөр хэлбэл, хэрэв файлын дунд байгаа бол дэлхийн хамрах хүрээ, хэрэв функц дотор байвал локал байна. Include гэдэг нь оруулахын оронд код авч файл руу хуулсантай адил гэдгийг дахин онцолж хэлье.

Анхаарал тавьсанд баярлалаа, амралтын өдрийг сайхан өнгөрүүлээрэй!

Игорь Гузей

Энэ нь зөв нэр томъёо, оновчтой хувилбаруудыг ашиглан үйл ажиллагааны нарийн бөгөөд тодорхой заавар биш юм. Энэ бол одоогийн асуудлын бүртгэл юм.

Даалгавар: PHP-д GD2 дэмжлэг/модуль нэмнэ

Ердийнх шигээ бид бэлтгэлээ хийж эхэлнэ орон нутгийн компьютер, мөн мэдээж Windows дээр ажилладаг. Илүү нарийвчлалтай Windows XP SP2.

Дараа нь портоор тохируулсан эсвэл FreeBSD-д зориулж гараар хөрвүүлсэн GD2-г PHP-д холбоно.

Windows дээр GD2-г PHP руу холбож байна
Бид хуваарилалтаас олж болно:
\php-4.3.9-Win32.zip\php-4.3.9-Win32\өргөтгөлүүд\
номын сан php_gd2.dll, i.e. хувилбар 2.
php_gd2.dll-г c:\windows руу хуулна
c:\windows\php.ini файлаас бид өргөтгөл=php_gd2.dll мөрийг олж, тайлбарыг устгана.

Apache-г дахин ачаална уу. Бүгд.
Хэрэв та эхлээд php.ini дээрх тайлбарыг гэнэн байдлаар устгаад энэ нь хангалттай гэж үзвэл Apache-г дахин эхлүүлсний дараа оношлогоо гарч ирнэ.

"./php_gd.dll динамик номын санг ачаалж чадсангүй" - Заасан модуль олдсонгүй."

FreeBSD дор GD2-г PHP руу холбож байна

PHP аль хэдийн портуудаас суулгасан

Илүү нарийн яривал зөвхөн PHP гэлтгүй ерөнхийдөө бүх зүйл (php, MySQL, Apache, ...) порт ашиглан тохируулагдсан.

# cd /usr/ports/lang/php4-extensions # config хийх checkbox нэмэх: "GD номын сангийн дэмжлэг" # устгах хийх # дахин суулгах # apachectl -k graceful soft restart эсвэл # apachectl restart rough restart.

PHP нь гараар бүтээгдсэн

Энэ тохиолдолд JPEG болон ZLIB бэлтгэх урьдчилсан ажил шаардлагатай

JPEG дэмжлэгийг суулгаж байна

Боломжит сонголтууд
Портоос JPEG
# cd /usr/ports/graphics/jpeg # make got directory ажиллах/jpeg-6b хийхгүй суулгах суулгах
Түгээлтийн JPEG

# 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 # ./тохируулах # хийх

Та zlib дэмжлэгийг суулгах хэрэгтэй
Боомтоос

# cd /usr/ports/archivers/php4-zlib # make Номын сангуудыг суулгасан: /usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules

# cd /usr/dist/php-4.4.4 # ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd-г зааж өгөхгүйгээр лавлах PHP-д суурилуулсан GD номын сан суулгагдсан.

--with-jpeg-dir=/usr/ports/graphics/jpeg/work/jpeg-6b бол jpeg нь портоос, хэрэв jpeg нь түгээлтийнх бол /usr/dist/jpeg-6b бол --with-zlib-dir =/ usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules # суулгах && цэвэрлэх

Туршилт хийхgif.php:png.phpjpg.php:
gd_info.php: ТҮЛХҮҮРVAL
$val) цуурай " $ түлхүүр



$val"; ?>

Дамжуулсан алдаанууд

JPEG номын санг суулгахдаа "хийх" гэсний дараа /usr/local руу шинэ файлууд орж, тэндээс автоматаар олдоно гэсэн хүлээлттэй "make install" командыг хийсэн.

# ./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

Гэвч зарим шалтгааны улмаас JPEG холбогдоогүй байна. Сөрөг онош гараагүй, үр дүн гараагүй.

Тэнэг байдлаасаа болоод сохор зулзага шиг тонгочиж, энэ тэрийг ингэж хэлэх гэж оролдов.

Суулгасан бүх зүйлээр дамжуулан, дараа нь татаж авсан, дараа нь портуудаас.

Энэ бүх гутамшиг нь шаардлагагүй суулгацууд дагалдаж, PHP суулгах явцад алдаа гарсан тул асуудал үүссэн: # ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local PHP ашигласанд баярлалаа. # make install /usr/dist/php-4.4.4/ext/gd/gd.c:1151: `gdImageRotate"-ийн тодорхойгүй лавлагаа, GD-д зориулсан лавлахыг зааж өгсөн мэт боловч оношилгоо нь суулгасан лавлахыг хэлнэ. # ./configure - -with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local --with-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 баярлалаа. PHP ашиглан # make install ... /usr/dist/php-4.4.4/ext/gd/gd.c:837: `gdImageColorMatch" /usr/dist/php-4.4.4/ext/gd-ийн тодорхойгүй лавлагаа. /gd.c:1151 : `gdImageRotate"-н тодорхойгүй лавлагаа *** Алдааны код 1Бүх модулийг тусад нь бэлдэж, яг зааж өгөхийг хичээж байна.

Бид curl-г харж эхлэхээсээ өмнө PHP хэлийг, жишээлбэл, PHP дээр Excel-д байршуулах эсвэл PHP дээр таних чадварын тухай материалд аль хэдийн хөндөгдсөн гэдгийг сануулмаар байна. PHP руу хүсэлт илгээх.

CURL гэж юу вэ?

# ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local PHP ашигласанд баярлалаа. # make install /usr/dist/php-4.4.4/ext/gd/gd.c:1151: `gdImageRotate"-ийн тодорхойгүй лавлагаа, GD-д зориулсан лавлахыг зааж өгсөн мэт боловч оношилгоо нь суулгасан лавлахыг хэлнэ. # ./configure - -with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local --with-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 баярлалаа. PHP ашиглан # make install ... /usr/dist/php-4.4.4/ext/gd/gd.c:837: `gdImageColorMatch" /usr/dist/php-4.4.4/ext/gd-ийн тодорхойгүй лавлагаа. /gd.c:1151 : `gdImageRotate"-н тодорхойгүй лавлагаа *** Алдааны код 1 HTTP гэх мэт хүсэлтийг илгээхэд ашиглаж болох PHP функцуудын номын сан юм PHP скрипт. CURL нь HTTP, HTTPS, FTP болон бусад протоколуудыг дэмждэг. Та GET, POST, PUT аргуудыг ашиглан HTTP хүсэлт илгээж болно.

CURL нь алсын скрипт рүү залгаж үр дүнг нь авах эсвэл дуудагдсан хуудасны HTML кодыг хадгалах шаардлагатай тохиолдолд хэрэг болно, ерөнхийдөө хүн бүр хэрэглээгээ олох боломжтой, гэхдээ гол нь скрипт ажиллаж байх үед та хүсэлт илгээх боломжтой юм. гүйж байна.

PHP дээр CURL номын санг холбох

CURL номын санг ашиглахын тулд та үүнийг зохих ёсоор холбох хэрэгтэй.

Анхаар! Жишээлбэл, бид Windows 7 дээр PHP 5.4.39, вэб сервер болгон Apache 2.2.22-г ашиглах болно.

Хамгийн эхний хийх зүйл бол номын сангуудыг хуулах явдал юм ssleay32.dll, libeay32.dll, libssh2.dllтэдгээр нь PHP-тэй лавлах, Windows системийн лавлах, тухайлбал C: \ Windows \ System32.

Дараа нь php_curl.dll номын санг php.ini руу холбоно, өөрөөр хэлбэл. дараагийн мөрийн тайлбарыг арилгана уу

Номын сан холбогдоогүй байна

;extension=php_curl.dll

Номын сан холбогдсон

Өргөтгөл=php_curl.dll

Ингээд л Apache-г дахин эхлүүлж, phpinfo() функцийг дуудаж, холболт амжилттай болвол та curl хэсэгтэй байх ёстой.


Хэрэв энэ нь байхгүй бол энэ нь зөвхөн нэг л зүйл гэсэн үг юм: номын сан ачаалагдаагүй байх хамгийн түгээмэл шалтгаан нь дээрх DLL файлуудыг Windows системийн лавлах руу хуулж аваагүй явдал юм.

CURL жишээ - дэлгэцэн дээр харуулах алсын хуудсыг хүсэх

Энэ жишээнд бид GET аргыг ашиглан HTTP-ээр дамжуулан алсын хуудас хүсэх ба түүний агуулгыг дэлгэцэн дээр харуулах болно.

Бидэнд тест_curl.php болон test.php гэсэн 2 PHP файл байгаа тестийн сан байгаа бөгөөд энд test_curl.php нь curl ашиглах скрипт, test.php нь бидний дуудах алсын скрипт юм. Би кодыг дэлгэрэнгүй тайлбарласан.

test_curl.php код

Code test.php

Гарчиг 1"; завсарлага; тохиолдол 2: цуурай "<Н2>Гарчиг 2"; завсарлага; тохиолдол 3: цуурай "<Н3>Гарчиг 3"; завсарлага; ) ) ?>

Үүний үр дүнд, хэрэв та test_curl.php-г ажиллуулбал дэлгэцэн дээр "Гарчиг 1" гэсэн мессеж гарч ирэх бөгөөд та id параметрүүдийг нэвтрүүлэх туршилт хийж болно ( Энэ тохиолдолд 2 эсвэл 3).

CURL жишээ - алсын скриптийг дуудаж, үр дүнг авах

Одоо дараа нь боловсруулахын тулд скриптийг дуудаж үр дүнг нь авахыг оролдъё, жишээлбэл, POST аргыг ашиглая. Файлын нэрийг хэвээр үлдээе.

test_curl.php код

Code test.php

Хэрэв бид test_curl.php-г ажиллуулбал дэлгэцэн дээр 111 гарч ирнэ, өөрөөр хэлбэл. 1.11-ийг 100-аар үржүүлсэн алсын скриптэд хандсаны үр дүнд олж авсан.

Одоо функцууд болон тэдгээрийн тогтмолуудын талаар ярилцъя.

Түгээмэл хэрэглэгддэг CURL функцууд ба тогтмолууд

  • curl_init - сессийг эхлүүлнэ;
  • curl_close - сессийг хаадаг;
  • curl_exec - хүсэлтийг гүйцэтгэдэг;
  • curl_errno - Алдааны кодыг буцаана;
  • curl_setopt - Сессийн параметрийг тохируулна, жишээлбэл:
    • CURLOPT_HEADER – 1-ийн утга нь толгой хэсгийг буцаах ёстой гэсэн үг;
    • CURLOPT_INFILESIZE - хүлээгдэж буй файлын хэмжээг тодорхойлох параметр;
    • CURLOPT_VERBOSE - 1 утга нь CURL нь гүйцэтгэсэн бүх үйлдлүүдийн талаарх дэлгэрэнгүй мессежийг харуулах болно гэсэн үг юм;
    • CURLOPT_NOPROGRESS – үйл ажиллагааны явцын заагчийг идэвхгүй болгодог, утга 1;
    • CURLOPT_NOBODY – хэрэв танд баримт бичиг хэрэггүй, зөвхөн толгой хэсэг хэрэгтэй бол утгыг 1 болгож тохируулна уу;
    • CURLOPT_UPLOAD - сервер рүү файл байршуулахад зориулагдсан;
    • CURLOPT_POST – POST аргыг ашиглан хүсэлтийг гүйцэтгэх;
    • CURLOPT_FTPLISTONLY - директор доторх файлуудын жагсаалтыг авах FTP серверүүд, утга 1;
    • CURLOPT_PUT — PUT аргыг ашиглан хүсэлтийг гүйцэтгэх, утга 1;
    • CURLOPT_RETURNTRANSFER - үр дүнг хөтөч рүү гаргахгүйгээр буцаана, утга 1;
    • CURLOPT_TIMEOUT – гүйцэтгэлийн дээд хугацаа секундээр;
    • CURLOPT_URL – холбоо барих хаягийг зааж өгөх;
    • CURLOPT_USERPWD - : хэлбэрээр хэрэглэгчийн нэр, нууц үг бүхий мөр;
    • CURLOPT_POSTFIELDS – POST хүсэлтийн өгөгдөл;
    • CURLOPT_REFERER - "Referer:" HTTP толгойн утгыг тохируулна;
    • CURLOPT_USERAGENT - "Хэрэглэгч-Агент:" HTTP толгойн утгыг тохируулна;
    • CURLOPT_COOKIE — HTTP хүсэлтийн хамт илгээгдэх “Күүки:” толгой хэсгийн агуулга;
    • CURLOPT_SSLCERT - PEM форматын гэрчилгээ бүхий файлын нэр;
    • CURLOPT_SSL_VERIFYPEER – алсын серверийн сертификатын баталгаажуулалтыг идэвхгүй болгохын тулд 0 утга (өгөгдмөл 1);
    • CURLOPT_SSLCERTPASSWD — сертификат файлын нууц үг.
  • curl_getinfo - Үйлдлийн талаарх мэдээллийг буцаана, хоёр дахь параметр нь яг юу харуулах ёстойг зааж өгөх тогтмол байж болно, жишээлбэл:
    • CURLINFO_EFFECTIVE_URL - хамгийн сүүлд ашигласан URL;
    • CURLINFO_HTTP_CODE - хамгийн сүүлд хүлээн авсан HTTP код;
    • CURLINFO_FILETIME — ачаалагдсан баримтын өөрчлөлтийн огноо;
    • CURLINFO_TOTAL_TIME — үйлдлийн гүйцэтгэлийн хугацаа секундээр;
    • CURLINFO_NAMELOOKUP_TIME — серверийн нэрийг секундээр шийдвэрлэх хугацаа;
    • CURLINFO_CONNECT_TIME — холболт тогтооход зарцуулсан хугацаа, секундээр;
    • CURLINFO_PRETRANSFER_TIME — үйл ажиллагаа эхэлснээс хойш бодит өгөгдөл дамжуулахад бэлэн болох хүртэлх хугацаа секундээр;
    • CURLINFO_STARTTRANSFER_TIME — үйл ажиллагаа эхэлснээс хойш эхний байт өгөгдөл дамжуулах хүртэлх хугацаа секундээр;
    • CURLINFO_REDIRECT_TIME — дахин чиглүүлэхэд зарцуулсан хугацаа, секундээр;
    • CURLINFO_SIZE_UPLOAD - байршуулах үед байтуудын тоо;
    • CURLINFO_SIZE_DOWNLOAD - татаж авах үед байтуудын тоо;
    • CURLINFO_SPEED_DOWNLOAD - татаж авах дундаж хурд;
    • CURLINFO_SPEED_UPLOAD - татаж авах дундаж хурд;
    • CURLINFO_HEADER_SIZE - хүлээн авсан бүх толгойн нийт хэмжээ;
    • CURLINFO_REQUEST_SIZE - илгээсэн бүх хүсэлтийн нийт хэмжээ;
    • CURLINFO_SSL_VERIFYRESULT - CURLOPT_SSL_VERIFYPEER параметрийг тохируулах замаар хүссэн SSL сертификатыг шалгасны үр дүн;
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD - Агуулгын уртын толгой хэсгээс уншсан татаж авсан баримт бичгийн хэмжээ;
    • CURLINFO_CONTENT_LENGTH_UPLOAD - байршуулсан өгөгдлийн хэмжээ;
    • CURLINFO_CONTENT_TYPE - хүлээн авсан Контентын төрлийн толгой хэсгийн агуулга, хэрэв энэ толгойг хүлээн аваагүй бол NULL.

Та албан ёсны PHP вэбсайтаас CURL функцууд болон тэдгээрийн тогтмолуудын талаар илүү ихийг олж мэдэх боломжтой -

Нүдний шил...

PHP-д python, java эсвэл .net гэх мэт суулгасан импортын хүрээ байдаггүй. РНР дээр номын санг ашиглах хэд хэдэн арга байдаг.

    тэдгээрийг PHP хоёртын файл болгон хөрвүүлнэ. Энэ бол хамгийн дэвшилтэт арга бөгөөд танд онцгой хэрэгцээ байхгүй бол ихэвчлэн зөвлөдөггүй.

    Тэдгээрийг суулгаарай PHP модулиудсервер дээр суулгаж, PHP.ini дээр идэвхжүүлнэ үү. РНР програмистын үүднээс эдгээр өргөтгөлүүд нь PHP-ийн нэг хэсэг бөгөөд үргэлж бэлэн байдаг. PHP-г дахин бүтээхгүйгээр нэмэх, хасах нь илүү хялбар байдаг.

    PHP кодыг сервер дээр хаа нэгтээ суулгаж, PHP скриптдээ () оруулна уу.

    Номын сангийн хуулбарыг төсөлдөө хадгалаад PHP скриптдээ оруулна уу.

P a g e Үндсэн түвшинд код нь орчуулагчийн нэг хэсэг (статик эсвэл динамик) эсвэл таны төсөлд ()ed-г агуулсан энгийн хуучин PHP код юм.

Таны зорилгын үүднээс би танд стандарт PHP түгээлтийг ашиглахыг санал болгож байна (сайн Линукс үйлдлийн систем сонгоод PHP-г ашигла). Дараа нь орчуулагчийн түвшинд танд хэрэгтэй бараг бүх номын сангууд нэмэлт багц хэлбэрээр байдаг бөгөөд түүний нарийн төвөгтэй байдал нь үүнийг өдөр бүр хийдэг хүмүүст үлддэг.

RedHat/Centos дээр та дараахийг ажиллуулж болно:

юм суулгах php php-memcached php-gd php-pecl

Хуудас Таны ашиглахыг хүсч буй бусад номын сангийн хувьд энэ бүхнийг танд хариуцах сайн PHP фреймворк ашиглах нь зүйтэй болов уу.

Зарим жишээ:

  • Zend Framework
  • CakePHP
  • Codeigniter
  • гэх мэт...

(ямар ч дарааллаар биш, зүгээр л санаанд орж ирдэг)

Хэрэв та эмхэтгэсэн PHP болон өргөтгөлийн талуудыг удирдахын тулд RPM эсвэл үүнтэй төстэй стандарт аргыг ашигласан бол сайн бат бөх бүтэц нь таны бүх програмыг багтаах болно. нэмэлт кодТанд хэрэгтэй PHP номын сан.

Эцсийн үр дүн нь юу вэ: та сурах, зохион бүтээх шаардлагатай бүх дэд бүтцээсээ илүү бүтээгдэхүүнээ хүргэхэд анхаарлаа төвлөрүүлж байна.

PHP эхлэх үед php.ini хуудсыг задлан шинжилж ажиллуулдаг ( тушаалын мөр, сервер бүрийг apache дээр нэг удаа ажиллуулдаг). Энэ нь олон тохиргоог тодорхойлдог, олон модулийг агуулдаг, тэдгээр модулиудыг тохируулдаг гэх мэт.

Үнэн хэрэгтээ та PHP дээрх ini_set() функцийг ашиглан php.ini дээрх зарим тохиргоог хүчингүй болгож болно. Гэхдээ энэ нь зөвхөн зарим тохиргоонд ажилладаг. Скриптийг ажиллуулахын өмнө бусад нь суулгасан байх ёстой.

Apache дээр ажиллахдаа та .htaccess болон , энэ нь тухайн директор/виртуал хостын PHP.ini-г бүрэн хүчингүй болгодог.

(миний синтаксийг засч, буруу бол энэ тэмдэглэлийг устгана уу)

ServerName www.example.com DocumentRoot /home/joe/site/docroot php_value include_path "/home/joe/site/php-код"

Хуудас Өөрийн номын сангийн тухай 6-р асуултанд хариулахдаа хамгийн сайн аргаТүүний сав баглаа боодол, би та эхлээд номын сангийн хэрэгцээг үнэлэхийг санал болгож байна. Хэрэв та ямар нэг зүйл хийвэл хүмүүсийн хамгийн түгээмэл арга замыг олж мэдээрэй. Хэрэв энэ нь энгийн номын сан бол сайн вэбсайттай .php файл хангалттай.

Хуудас бага зэрэг эргэлзэж магадгүй, гэхдээ энэ нь таныг зөв чиглэлд чиглүүлнэ гэж найдаж байна.

Анхдагч байдлаар, MySQL-тэй ажиллах өргөтгөл (php_mysql.dll номын сан) PHP-д холбогдоогүй бөгөөд холбогдох функцууд байхгүй байна. Номын санг холбохын тулд та php.ini тохиргооны файлд өөрчлөлт хийж, нэмэлт сангуудыг c:/windows/system32 директор руу хуулах хэрэгтэй.

1. PHP (Apache)-д php.ini хаана байгааг хэлнэ үү (зөвхөн Apache 2.x)

Хэрэв та Apache 2 ба түүнээс дээш хувилбарыг ашиглаж байгаа бол php.ini файлын яг байршлыг зааж өгөх боломжийг олгодог Apache тохиргооны файлд (httpd.conf) PHPIniDir удирдамжийг нэмэхээ мартуузай. Зааврыг нэмсний дараа Apache-г дахин эхлүүлээд амжилттай эхлүүлсэн эсэхийг шалгаарай.

PHPIniDir "c:/php"

Анхаарна уу

Замыг урагш налуу зураас / ашиглан бичдэг болохыг анхаарна уу, энэ нь Windows-ийн хувьд ер бусын бөгөөд урвуу зураасыг \\ ашигладаг. Баримт нь Apache болон PHP аль аль нь Unix системүүд дээр ажиллахаар бүтээгдсэн бөгөөд энд налуу зураасыг ашигладаг. Оношлогдоход хүндрэлтэй асуудлуудаас зайлсхийхийн тулд Apache болон PHP тохиргооны файлуудад unix форматаар налуу зураасыг ашиглахыг зөвлөж байна.

Энэ нь php.ini тохиргооны файлыг c:/php санд хадгалсан гэж үздэг. Apache php.ini тохиргооны файлыг олсон эсэхийг шалгахын тулд phpinfo() функцийг ажиллуулна уу.

PHP тохиргооны мэдээллийг гаргаж байна

echo phpinfo();
?>

Үүссэн ягаан хүснэгтүүдээс мөрийн утгыг ол "Тохиргооны файл (php.ini) зам". Энэ нь ашигласан php.ini файлын замыг зааж өгөх ёстой. файлыг оруулаад. Хэрэв энэ мөрөнд зөвхөн лавлахыг зааж өгсөн бол Apache php.ini файлыг олж чадаагүй гэсэн үг.

C:/php/php.ini // Зөв - php.ini олоод ашигласан
C:/windows/ // Буруу - php.ini олдсонгүй

Анхаарна уу

Apache-д илүү олон зүйл бий өмнөх хувилбарууд PHPIniDir заавар байхгүй байсан бөгөөд үүний үр дүнд php.ini файлын буруу байрлалаас болж маш олон алдаа гарсан. Apache 1.3 хувилбарын хувьд php.ini нь Windows системийн лавлахад байх ёстой, ихэвчлэн: c:/Windows. Apache хувилбар 2 дээр PHPIniDir удирдамжийг ашиглах нь танд энэ асуудлыг эрс шийдэх боломжийг олгоно.

Apache зөв php.ini ашиглаж байгаа эсэхийг шалгасны дараа MySQL өргөтгөлийг идэвхжүүлэхийн тулд засварлаж эхлэх боломжтой.

2. PHP.INI дээр extension_dir удирдамжийг тохируулна уу

extension_dir заавар нь номын сангууд байрлах лавлахыг заадаг php өргөтгөлүүд php_mysql.dll номын сан зэрэг орно. Хэрэв та c:/php директорт php суулгасан бол өргөтгөлийн сангууд ихэвчлэн ext дэд директорт (c:/php/ext) байрладаг. Энэ үнэн эсэхийг шалгаад extension_dir зааврыг зөв утгаар тохируулна уу.

Өргөтгөл_дир = "c:/php/ext"

3. MySQL-тэй ажиллахын тулд өргөтгөлийг холбоно уу

Үүнийг хийхийн тулд php.ini доторх мөрийг олоорой:

;extension=php_mysql.dll

Үүнээс тайлбар тэмдэг - цэг таслалыг хас.

Өргөтгөл=php_mysql.dll

4. Нэмэлт libmysql.dll санг c:/windows руу хуулна

Хэрэв танд PHP Apache-д модуль хэлбэрээр холбогдсон бол MySQL өргөтгөлийг холбохын тулд c:/php лавлахаас libmysql.dll нэмэлт номын санг c:/windows/system32 лавлах руу хуулах хэрэгтэй. Хэрэв php нь Apache-д CGI програмаар холбогдсон бол нэмэлт номын санг хуулах шаардлагагүй.

5. Apache-г дахин эхлүүлнэ үү

Бүх өөрчлөлт хүчин төгөлдөр болохын тулд Apache-г дахин эхлүүлнэ үү.

6. Өргөтгөлийн суулгацыг шалгана уу

MySQL номын сан PHP-д амжилттай холбогдсон эсэхийг шалгахын тулд phpinfo() функцийг ажиллуулна уу. "Нил ягаан өнгийн хүснэгтүүд"-ийг хайж олоод MySQL нэртэй хэсгийг олоорой. Хэрэв ийм хэсэг байгаа бол энэ нь өргөтгөл амжилттай холбогдсон гэсэн үг юм.

PHP болон MySQL-ийн харилцан үйлчлэлийг шалгаж байна

1. Таны MySQL сервер ажиллаж байгаа эсэхийг шалгана уу.

PHP болон MySQL-ийн харилцан үйлчлэлийг туршиж эхлэхээсээ өмнө MySQL сервер ажиллаж байгаа эсэхийг шалгаарай. Жагсаалтыг нээх замаар үүнийг хийж болно Windows үйлчилгээ: "Эхлэх" | "Хяналтын самбар" | "Захиргаа" | "Үйлчилгээ". MySQL нэртэй үйлчилгээг олоод ажиллаж байгаа эсэхийг шалгана уу (хүснэгтийн гурав дахь багана).

MySQL сервер ажиллаж байгаа эсэхийг шалгах хоёр дахь арга: "Crtl" + "Alt" + "Del" товчийг дараад "Процессууд" табаас mysqld.exe нэртэй процессыг олоорой. mysqld.exe процессын оронд дараах процессууд ажиллах боломжтой: mysqld-nt.exe, mysqld-max-nt.exe, mysqld-debug.exe.

2. Туршилтын php скриптийг ажиллуул

$dblocation = "127.0.0.1" ;
$dbname = "туршилт" ;
$dbuser = "root" ;
$dbpasswd = "" ;

$dbcnx = mysql_connect ($dblocation, $dbuser, $dbpasswd);
хэрэв (! $dbcnx )
{
цуурай "" ;
гарах();
}
хэрэв (!

{
цуурай "" ;
гарах();
}

if(!$ver)
{
цуурай "

Хүсэлтийн алдаа

" ;
гарах();
}
цуурай
mysql_result($ver, 0);
?>

Туршилт амжилттай бол MySQL серверийн хувилбарын дугаар дэлгэц дээр гарч ирнэ. Үгүй бол гарсан алдааны тайлбарыг дэлгэц дээр харуулах болно.

MySQL-тэй ажиллах өргөтгөлийг холбоход гарсан алдаа

Алдаанууд: Тодорхойгүй функц руу залгах

"Тодорхойгүй функц руу залгах" гэсэн хэллэг агуулсан бүх алдаа нь PHP холболтгүй өргөтгөлийг илтгэнэ. Хэрэв MySQL функцтэй ажиллахад ийм алдаа гарвал MySQL-тэй ажиллах PHP номын сан - php_mysql.dll ороогүй гэсэн үг.

Алдааны мессежийн жишээ:

Гайхалтай алдаа: Mysql_connect() тодорхойгүй функц руу залгах

Энэ асуудлыг шийдэхийн тулд нийтлэлийн эхэнд хандана уу.

phpinfo()-д MySQL блок байхгүй

Хэрэв бүх зүйл зөв хийгдсэн боловч MySQL-тэй ажиллах өргөтгөл холбогдоогүй, phpinfo() функцын гаралтад MySQL блок байхгүй бол c:/windows/ дотор байрлах libmysql.dll номын сангийн хувилбарыг шалгана уу. систем32.

  1. c:/windows/system32 дээр байрлах libmysql.dll номын сангийн хэмжээг PHP дээр суулгасан ижил нэртэй номын сангийн хэмжээтэй харьцуулж үзээрэй. Тэд тэнцүү байх ёстой.
  2. c:/windows лавлах болон бүх дэд сангуудаар дамжуулан libmysql.dll сангуудыг олоорой. Олдсон бүх хуулбарыг устгаад зөвхөн c:/php лавлахаас хуулсан шаардлагатай нэг номын санг үлдээнэ үү.

Анхаарна уу

Ижил нэртэй libmysql.dll номын сан нь MySQL сервертэй хамт ирдэг. Гэхдээ эдгээр нь өөр номын сангууд бөгөөд хэрэв c:/windows/system32 санд MySQL-ийн номын сан байгаа бол PHP өргөтгөлийг холбох боломжгүй болно. MySQL серверийг суулгах үед libmysql.dll номын санг c:/windows/system32 руу автоматаар хуулж болно. Системийн санд PHP-ийн хуучин хувилбарын номын сан байгаа нь бас саад болж магадгүй юм.

Хоосон тестийн скрипт хуудас

Доорх жагсаалтад үзүүлсэн скриптийг манай вэбсайт дээрх PHP-ийн MySQL-тэй харилцан үйлчлэлийг шалгах скрипт болгон ашигладаг. Өгүүллийн эхэнд өгсөн ижил төстэй PHP скриптээс ялгаатай нь mysql_connect() болон mysql_select_db() функцүүдийг дуудахын өмнөх @ тэмдэгтүүд юм. Эдгээр тэмдэгтүүд нь хөтөч дээрх алдааны гаралтыг дарахад ашиглагддаг. Нууц мэдээллийг хөтөч дээр харуулахаас урьдчилан сэргийлэхийн тулд тэдгээрийг интернетэд ажиллаж байгаа вэбсайт дээр ашиглах нь ашигтай боловч скриптийг дибаг хийхдээ алдаа гаргахыг хориглох шаардлагагүй, учир нь Энэ нь асуудлыг оношлоход хэцүү болгодог.

MySQL сервертэй PHP харилцан үйлчлэлийг шалгадаг PHP скрипт

$dblocation = "127.0.0.1" ;
$dbname = "туршилт" ;
$dbuser = "root" ;
$dbpasswd = "" ;

$dbcnx = @mysql_connect ($dblocation, $dbuser, $dbpasswd);
хэрэв (! $dbcnx )
{
цуурай "

Харамсалтай нь mySQL сервер байхгүй байна

" ;
гарах();
}
хэрэв (!@
mysql_select_db ($dbname, $dbcnx))
{
цуурай "

Харамсалтай нь мэдээллийн сан байхгүй байна

"
;
гарах();
}
$ver = mysql_query("СОНГОХ VERSION()" );
if(!$ver)
{
цуурай "

Хүсэлтийн алдаа

"
;
гарах();
}
цуурай
mysql_result($ver, 0);
?>

Хэрэв энэ скриптийг ажиллуулсны үр дүнд хоосон хуудас гарч ирвэл энэ нь дүрмээр бол php_mysql.dll номын сан PHP-тэй холбогдоогүй гэсэн үг юм. Асуудлыг илүү нарийвчлалтай оношлохын тулд дараах дарааллыг гүйцэтгэнэ.

  1. MySQL мэдээллийн баазыг ашигладаггүй бусад PHP скриптүүд ажиллаж байгаа эсэхийг шалгаарай.
  2. Хөтөч дээрх алдааны гаралтыг дарахад ашигладаг mysql_connect болон mysql_select функцуудыг дуудахын өмнө @ тэмдгийг устгана уу. Үүний дараа алдааны талаарх дэлгэрэнгүй мэдээллийг хөтөч дээр харуулах бөгөөд энэ нь асуудлыг шийдвэрлэхэд тусална.

Алдаа: "127.0.0.1" (10061) дээрх MySQL серверт холбогдох боломжгүй байна.

Хэрэв PHP тестийн скриптийг ажиллуулах үед дараахтай төстэй алдаа гарч ирвэл:


"127.0.0.1" (10061) дээрх MySQL серверт холбогдож чадахгүй байна
7-р мөрөнд C:\www\panel\htdocs\test.php дээр

Энэ нь MySQL өгөгдлийн сангийн сервер ажиллахгүй байгааг харуулж байна. Энэ асуудлын илүү нарийвчлалтай оношийг дээр "PHP-ийн MySQL-тэй харилцан үйлчлэлийг шалгах" дэд хэсгийн 1-р зүйлд өгсөн болно.

Алдаа: "root"@"localhost" хэрэглэгчийн хандалтыг хориглосон (нууц үг ашиглах: YES)

Дараах алдаа гарсан байна:

Анхааруулга: mysql_connect():
"root"@"localhost" хэрэглэгчийн хандалтыг хориглосон (нууц үг ашиглах: YES)
7-р мөрөнд C:\www\panel\htdocs\test.php дээр

Энэ нь таныг MySQL мэдээллийн санд буруу нууц үгээр холбогдохыг оролдож байгааг харуулж байна. Туршилтын скрипт дэх $dbpasswd хувьсагчийн утгыг шалгана уу. Анхдагч байдлаар, MySQL сервер нь хоосон root хэрэглэгчийн нууц үгээр суулгагдсан байдаг. Хэрэв та үндсэн хэрэглэгчийн нууц үгийг өөрөө тохируулсан бол баталгаажуулах скриптийн $dbpasswd хувьсагч руу бичнэ үү.

Та Apache, PHP болон өргөтгөлийн сангуудыг суулгах, тохируулахад зориулагдсан манай форум дээр ажиллахын тулд PHP өргөтгөлүүдтэй холбогдох талаар асууж болно.

Эхлэх