Igor Guzey

Toto nie je presné a zvyšné pokyny sú aktuálne, pretože sú určené správne podmienky a optimálne možnosti. Toto je problém centrálneho závitovania.

Úloha: Pridajte podporu/modul GD2 do PHP

Opäť začíname trénovať na lokálnom počítači a potom, samozrejme, pracujeme pod Windowsom. Presnejšie Windows XP SP2. Potom môžeme povoliť GD2 z PHP, nakonfigurovaný cez porty, alebo ho ručne zostaviť pod FreeBSD.

Pripojenie GD2 k PHP pod Windows

Známe z distribučnej súpravy:
\php-4.3.9-Win32.zip\php-4.3.9-Win32\extensions\
knižnica php_gd2.dll, potom. Verzia 2.
A skopírujte php_gd2.dll do c:\windows
V súbore c:\windows\php.ini máme príponu riadku=php_gd2.dll a odstráňte komentár.
Revantazhuemo Apache. To je všetko.

Ak najprv preberiete komentár z php.ini a zamyslíte sa nad tým, čo stačí, tak po reštarte Apache sa zobrazí diagnostika:
"Nedá sa načítať dynamická knižnica "./php_gd.dll" - Inštrukcie modulu sa nenašli."

Pripojenie GD2 k PHP pod FreeBSD

PHP je už nainštalované z portov

Presnejšie, nielen PHP, ale všetko (php, MySQL, Apache, ...) bolo vyladené pre ďalšie porty.

# cd /usr/ports/lang/php4-extensions # make config začiarknite políčko: "Podpora knižnice GD" # make deinstall # make reinstall # apachectl -k ladný mäkký reštart alebo # apachectl reštart hrubý reštart

Zbierka manuálov PHP

Ktorý typ vyžaduje pokročilé spracovanie JPEG a ZLIB

Úprava podpory JPEG

Možné možnosti

JPEG z portu
# cd /usr/ports/graphics/jpeg # make remove directory work/jpeg-6b neobťažuj sa make install
JPEG z distribúcie
# 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

Musíte si nainštalovať podporu zlib

Z prístavu
# cd /usr/ports/archivers/php4-zlib # make Knižnice boli nainštalované v: /usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules

Zbierame PHP

# cd /usr/dist/php-4.4.4 # ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd bez pridania adresár Knižnica GD je nainštalovaná do knižnice PHP. --with-jpeg-dir=/usr/ports/graphics/jpeg/work/jpeg-6b , kde jpeg je na porte alebo /usr/dist/jpeg-6b , keď je jpeg na distribúcii --with-zlib -dir=/ usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules # make install && make clean

Testovanie

gif.php:png.phpjpg.php:gd_info.php:
KEY VAL$val) echo "
$kľúč $val"; ?>



Súlad prešiel

Pri inštalácii knižnice JPEG bol za príkaz „make“ pridaný príkaz „make install“ s príkazom, že nové súbory budú umiestnené v /usr/local a potom tam budú automaticky nájdené

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

Obávam sa, že JPEG sa nepripojí. Nebola žiadna negatívna diagnostika, ale žiadny výsledok.

Z hlúposti som tikal ako slepý z kosačky a snažil som sa to povedať takto, potom tamto. Buď cez sťahovanie, potom cez sťahovanie, potom z portov. Všetku túto nekonzistentnosť sprevádzali rozsiahle inštalácie, ktorých výsledkom boli prekrytia, ktoré sa objavili v čase inštalácie PHP:

# ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local Zmena pre PHP wiki. # make install /usr/dist/php-4.4.4/ext/gd/gd.c:1151: nedefinovaný odkaz na `gdImageRotate", v ktorom je špecifikovaný adresár pre GD a na zadaný adresár sa aplikuje diagnostika. # . /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 Zmeňte svoju PHP wiki # make nainštalovať .. .. /usr/dist/php-4.4.4/ext/gd/gd.c:837: nedefinovaný odkaz na `gdImageColorMatch" /usr/dist/php-4.4.4/ext/gd/gd.c: 1151 : nedefinovaný odkaz na `gdImageRotate" *** Kód chyby 1

Pokúste sa pripraviť všetky moduly presne a presne na ne nasmerujte.

Pár pohárov...

PHP nemá zabudovanú žiadnu importnú infraštruktúru ako python, java alebo .net. Existuje niekoľko spôsobov, ako používať knižnice PHP.

    Skompilujte ich do dvojitého súboru PHP. Toto je najpohodlnejšia metóda a nie je dôležitá, pretože nemáte žiadne špeciálne potreby.

    Nainštalujte ich ako moduly PHP na server a prepojte ich s PHP.ini. Podľa programu PHP sú tieto rozšírenia a časti PHP dostupné odteraz. Je to jednoduchšie pridávať a odstraňovať bez nutnosti reštartovať samotné PHP.

    Nainštalujte kód PHP niekde na server a pridajte ho do svojho skriptu PHP.

    Uložte kópiu knižnice vo svojom projekte a stiahnite si ju zo skriptu PHP.

Strana Na základnej úrovni je kód súčasťou tlmočníka (statického alebo dynamického), ale je to jednoduchý starý PHP kód, ktorý obsahuje() ed vo vašom projekte.

Pre vaše účely vám môžem len odporučiť zaobstarať si štandardnú distribúciu PHP (vyberte si dobrý OS Linux a vyberte si svoje PHP). Všetky knižnice, ktoré potrebujete ako tlmočník, sú dostupné ako prídavné balíčky, ktorých zložitosť sa stráca za tými, ktorí pracujú denne.

Pre RedHat/Centos môžete spustiť:

yum install php php-memcached php-gd php-pecl

Vedľajšia poznámka: Existujú všetky ostatné knižnice, ktoré by ste mohli chcieť použiť na všetko, najmä dobrý rámec PHP, ktorý je pre vás určený.

Akčné zadky:

  • Zend Framework
  • CakePHP
  • Codeigniter
  • Atď...

(nie v akomkoľvek poradí, iba tí, ktorí upadnú do myšlienok)

Podľa vášho názoru ste použili štandardný RPM alebo podobný prístup na kompiláciu v aspektoch PHP a rozšírení, potom je dobrá spoľahlivá štruktúra vhodná na zahrnutie všetkého dodatočného kódu knižnice PHP, ktorý potrebujete.

Aký je konečný výsledok: Zameriavate sa na dodanie produktu a nie na celú infraštruktúru, ktorú by ste inak museli inštalovať a prevádzkovať.

Stránka php.ini sa analyzuje a spustí pri spustení PHP (vždy pre príkazový riadok, raz na serveri sa spustí v Apache). To znamená priame nastavenie, zahŕňa nezávislé moduly, nastavenie modulov atď.

V skutočnosti môžete zmeniť priradenie určitých parametrov v php.ini pomocou dodatočnej funkcie ini_set() v PHP. Pre ľudí je však lepšie vykonať úpravy. Iné môžu byť nainštalované pred spustením skriptu.

Pri práci pod Apache môžete do direktívy .htaccess pridávať riadky Úplne preradím PHP.ini do vášho adresára/virtuálneho hostiteľa.

(Buďte láskaví, opravte moju syntax a odstráňte túto poznámku, ak nie je správna)

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

Strana V odpovedi na vašu otázku č. 6 o vašej knižnici a najlepšom spôsobe jej zabalenia vám odporúčam, aby ste okamžite ocenili potrebu knižnice. A ak naozaj pracujete, zistite najbežnejší spôsob, akým sa ľudia vyrovnávajú. Je to jednoduchá knižnica, všetko, čo potrebujete, je súbor .php s dobrou webovou stránkou.

Storinka Je to možné, trochu nediskrétne, ale som presvedčený, že ste to hneď povedali správnemu.

Strávim trochu času rozprávaním o programovaní v jazyku PHP a zaseknem sa pri týchto rozšíreniach. CURL, potom. schopnosť komunikovať s rôznymi servermi pomocou rôznych protokolov zo samotného skriptu PHP.

Predtým, než sa začneme venovať curl, chcem pripomenúť, že PHP sme s vami už preberali napríklad v materiáli o používaní Excelu v PHP alebo možnosti autentifikácie v PHP a teraz si povieme niečo o schopnosti zapisovať v PHP.

Čo je CURL?

CURL– Ide o knižnicu funkcií PHP, pomocou ktorej môžete pridať výkon napríklad HTTP z PHP skriptu. CURL podporuje protokoly ako HTTP, HTTPS, FTP a iné. Požiadavky HTTP je možné vykonať pomocou metód GET, POST a PUT.

CURL môže byť užitočné v situáciách, keď potrebujete kliknúť na vzdialený skript a vrátiť späť výsledok, alebo jednoducho uložiť HTML kód stránky, na ktorú kliknete, aby ste mohli zistiť svoj stav, ako aj rovnaký zmysel, ako môžete odoslať požiadavku počas procesu skriptovania

Pripojenie knižnice CURL k PHP

Aby ste mohli používať knižnicu CURL, určite ju musíte pripojiť.

Poznámka! Napríklad budeme používať PHP 5.4.39 na Windows 7 a ako webový server použijeme Apache 2.2.22.

Prvá vec, ktorú musíte urobiť, je skopírovať knižnice. ssleay32.dll, libeay32.dll, libssh2.dll sú umiestnené v adresári PHP, v systémovom adresári Windows a v C:\Windows\System32.

Potom php.ini obsahuje knižnicu php_curl.dll. komentovať útočné rady

Knižnica nie je pripojená

;extension=php_curl.dll

Knižnica je pripojená

Prípona=php_curl.dll

To je všetko, reštartujte Apache, zavolajte funkciu phpinfo() a po úspešnom pripojení sa vám zobrazí sekcia curl


Hoci nič také neexistuje, znamená to len to, že knižnica nebola importovaná, čo je najväčší dôvod, prečo sa do systémového adresára Windows neskopírovalo viac knižníc DLL.

Butt CURL - napájanie vzdialenej strany pre zobrazenie na obrazovke

V tomto prípade aplikácie jednoducho načítajú vzdialenú stranu za protokolom HTTP pomocou metódy GET a zobrazia ju na obrazovke.

Máme testovací adresár v dvoch PHP súboroch: test_curl.php a test.php, test_curl.php a skript, kde budeme používať curl a test.php ako ďalší skript, ktorý budeme používať. Dôkladne som komentoval kódex.

Kód test_curl.php

Kód test.php

Nadpis 1"; prestávka; prípad 2: echo"<Н2>Nadpis 2"; prestávka; prípad 3: echo"<Н3>Nadpis 3"; prestávka; )) ?>

Výsledkom je, že ak spustíte test_curl.php, uvidíte na obrazovke napísané „Nadpis 1“, môžete experimentovať s odovzdávaním parametrov id ( na tsomu vipadku 2 alebo 3).

Príklad CURL – kliknite na vzdialený skript a extrahujte výsledok

Teraz skúsme kliknúť na skript a načítať výsledok a následne ho spracovať, použime napríklad metódu POST. Názvy súborov zostanú rovnaké.

Kód test_curl.php

Kód test.php

Ak spustíme test_curl.php, potom sa na obrazovke zobrazí 111. 1.11 prevzaté od dediča vzdialeného skriptu, vynásobené 100.

Teraz si povedzme o funkciách a konštantách pred nimi.

Bežne používané funkcie a konštanty CURL

  • curl_init – inicializuje reláciu;
  • curl_close – Zatvorte reláciu;
  • curl_exec - Vikonuє ask;
  • curl_errno - otočí resetovací kód;
  • curl_setopt – Nastavuje parameter pre reláciu, napríklad:
    • CURLOPT_HEADER – hodnota 1 znamená, že hlavičky je potrebné otočiť;
    • CURLOPT_INFILESIZE - parameter na určenie veľkosti súboru;
    • CURLOPT_VERBOSE - hodnota 1 znamená, že CURL zobrazí správy o všetkých operáciách;
    • CURLOPT_NOPROGRESS – zapnutie indikátora priebehu pre prevádzkovú hodnotu 1;
    • CURLOPT_NOBODY – ak nepotrebujete dokument, ale potrebujete len hlavičky, nastavte hodnotu na 1;
    • CURLOPT_UPLOAD - pre nahranie súboru na server;
    • CURLOPT_POST - Viconati sa zadáva pomocou metódy POST;
    • CURLOPT_FTPLISTONLY – výber zoznamu súborov v adresári FTP servera, hodnota 1;
    • CURLOPT_PUT - Viconati sa zadáva pomocou metódy PUT, hodnota 1;
    • CURLOPT_RETURNTRANSFER - otočiť výsledok bez prechodu do prehliadača, hodnota 1;
    • CURLOPT_TIMEOUT – maximálna hodina za sekundu;
    • CURLOPT_URL – vloženie adresy pre výmenu;
    • CURLOPT_USERPWD - zobrazený riadok s používateľskými menami a heslom:;
    • CURLOPT_POSTFIELDS – údaje pre vyžiadanie POST;
    • CURLOPT_REFERER - nastavuje hodnotu HTTP hlavičky "Referer:";
    • CURLOPT_USERAGENT - nastavuje hodnotu HTTP hlavičky “User-Agent:”;
    • CURLOPT_COOKIE - namiesto hlavičky "Cookie:", ktorá bude odoslaná s požiadavkou HTTP;
    • CURLOPT_SSLCERT - názov súboru s certifikátom vo formáte PEM;
    • CURLOPT_SSL_VERIFYPEER – hodnota 0 na zamedzenie overenia certifikátu vzdialeného servera (za 1);
    • CURLOPT_SSLCERTPASSWD – heslo k súboru certifikátu.
  • curl_getinfo - Vracia informácie o operácii, ďalším parametrom môže byť konštanta na vloženie, ktorá je najviac potrebná na zobrazenie, napríklad:
    • CURLINFO_EFFECTIVE_URL – zostávajúca adresa URL vyhľadávania;
    • CURLINFO_HTTP_CODE - zostávajúci kód HTTP;
    • CURLINFO_FILETIME - dátum úpravy požadovaného dokumentu;
    • CURLINFO_TOTAL_TIME - hodina prevádzky v sekundách;
    • CURLINFO_NAMELOOKUP_TIME – hodina rozlíšenia názvu servera v sekundách;
    • CURLINFO_CONNECT_TIME - hodina strávená inštaláciou pripojenia v sekundách;
    • CURLINFO_PRETRANSFER_TIME - hodina od začiatku operácie do pripravenosti pred samotným prenosom dát v sekundách;
    • CURLINFO_STARTTRANSFER_TIME - hodina od začiatku operácie do prenesenia prvého bajtu dát, v sekundách;
    • CURLINFO_REDIRECT_TIME - hodina strávená presmerovaním v sekundách;
    • CURLINFO_SIZE_UPLOAD - počet bajtov pri nahrávaní;
    • CURLINFO_SIZE_DOWNLOAD - počet bajtov pri stiahnutí;
    • CURLINFO_SPEED_DOWNLOAD - priemerná rýchlosť sťahovania;
    • CURLINFO_SPEED_UPLOAD - stredná rýchlosť;
    • CURLINFO_HEADER_SIZE - celková veľkosť všetkých odstránených hlavičiek;
    • CURLINFO_REQUEST_SIZE - celková veľkosť všetkých odoslaných požiadaviek;
    • CURLINFO_SSL_VERIFYRESULT — výsledok overenia certifikátu SSL požadovaného nastavením CURLOPT_SSL_VERIFYPEER;
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD - veľkosť sťahovaného dokumentu, načítaná z hlavičky Content-Length;
    • CURLINFO_CONTENT_LENGTH_UPLOAD - veľkosť dát, ktoré sa majú nahrať;
    • CURLINFO_CONTENT_TYPE - namiesto hlavičky typu obsahu alebo NULL, pretože táto hlavička nie je možná.

Správu o funkciách a konštantách CURL si môžete pozrieť na oficiálnej webovej stránke PHP.

Zápis: Aktivuje sa adaptívna verzia stránky, ktorá sa automaticky prispôsobí malej veľkosti vášho prehliadača a poskytne podrobnosti o stránke pre uľahčenie čítania. Dobre si to pozriem!

Veľa šťastia všetkým čitateľom blogu stránky na! Zvyšné 2 mesiace je moja práca pre firmu úzko spojená s čistým PHP (na druhej strane sú tabu na rôznych frameworkoch a CMS), pričom som už zabudol na Joomlu :), takže budem písať stále viac a viac.

Dnes si povieme, ako ovládať pripojenie súborov k PHP. Ako ste si mohli všimnúť, každý nástroj pre webovú stránku (Joomla, Wordpress, OpenCart, DLE a všetko, všetko, všetko) pozostáva z tisícov súborov .php (a nielen php) a všetky navzájom interagujú, čo je výkonný a kreatívny robotický mechanizmus webových stránok.

Teraz zabudnite na návštevnosť a odhaľte iný problém: na webe máme veľa stránok, každá má iné menu, hlavičku a pätu webu. Samozrejme, nebudeme kopírovať to isté zo súboru do súboru, inak by to bola stará HTML stránka z 90. rokov. Všetko sme rozdelili minimálne do 4 súborov:

  • index.php – hlavná časť stránky, tento súbor je možné upravovať
  • menu.php – menu webovej stránky
  • header.php – hlavička webovej stránky
  • footer.php – päta stránky

Okrem hlavnej stránky (index.php) napríklad môžeme mať aj stránky s rôznymi produktmi (category.php) a stránky samotných produktov (product.php). K týmto stránkam ručne zaraďujeme súbory menu.php, header.php, footer.php. Problém s týmto prístupom je, že keď pridávame novú položku menu, pridáme všetko raz (v menu.php), a nie 3-krát (v index.php, product.php, category.php).

Na vine je jedlo: "Ako získať súbor pred PHP?". Na tieto účely má PHP 2 inštrukcie:

A ich pochody:

Vraciam vašu úctu tým, ktoré zahŕňajú a vyžadujú - to nie sú funkcie, to sú takzvané konštrukcie, ktoré nevyžadujú ruky.

Prečo je rozdiel medzi zahrnúť a vyžadovať?

zahŕňajúі vyžadovať– je to úplne to isté, len s jedným rozdielom, ktoré pri migrácii (napríklad, ak zadaný súbor nepozná a nedá sa pripojiť) zahrnúť, ako je migrácia POZOR Potom bude stránka naďalej fungovať a bude to vyžadovať, ako vidíte, na úplné odstránenie lokality z lokality.

Požadované vyhlásenie je radikálne a tvrdé. Čo je lepšie ako vikorystuvat - verím, že z toho skvelého dôvodu vám odporúčam, aby ste si vždy vybrali prísnejšiu možnosť, aby ste vyžadovali, ale najmä slovo zahrnúť je prijateľnejšie :)

include_once a require_once - zakážte to isté ako include (zahrnutie súboru), ale v takom prípade sa uistite, že súbor nie je zahrnutý viac ako raz. Je obzvlášť ťažké sa ich zbaviť, pretože na projekte pracuje veľa ľudí a musíte sa uistiť, že súbor nie je nahrávaný príliš veľakrát.

Uvaga:

zahrnúť_razі vyžadovať_raz– pracujte lepšie a používajte viac pamäte RAM bez toho, aby ste zahŕňali a vyžadovali. Je celkom logické a s tým spojené, že si musia zapamätať všetky súbory, ktoré boli pripojené a bezprostredne pred časom pripojenia skontrolovať, či už nejaký súbor nie je pripojený.

Dovoľte mi jasne ilustrovať, ako funguje zahrnutie súborov v PHP:

Pri zahrnutí súborov (napríklad: html, txt, php, xml atď.) sa PHP skript pre ne jednoducho vloží na miesto zahrnutia. Potom zahrňte (a tiež rešpektujem požiadavku, takže je to to isté) - všetko je rovnaké, skopírovali ste nasledujúci kód (CTRL + C) a vložili (CTRL + V) do súboru (napríklad v product. php ) a potom sa uloží a spustí ako predtým: http://your_site.net/product.php

Ak chcete oddeliť hlavné súbory, ako napríklad product.php, od tých, ktoré boli predtým zahrnuté (menu.php, header.php, footer.php), premenujte zahrnuté súbory takto: menu.inc.php, header . inc.php , footer.inc.php. Takže, keď prejdeme do priečinka, okamžite rozlišujeme medzi hlavnými súbormi a ďalšími.

Uvaga:

Táto technika (add inc) je určená len pre zrakovú jasnosť a základné funkčné schopnosti. Aj keď je dôležitá aj vizuálna konzistencia, dbajte na to, aby ste vždy štruktúrovali a pracovali v rovnakom štýle.

zahrnúť s opačným významom

Pamätáte si kľúčové slovo? Takže PHP os je taká divoká, ako návrat uprostred include. Toto som vobec neskusal a zatial som nad tym ani nerozmyslal, aby proti tomu mohli bojovat ini, inak sa to da, skus zadok some.php:

Zahrnúť some.php:

// Zadajte riadok: PHP ?>

Ešte pár faktov

  • Súbory môžete zahrnúť do ľubovoľného kódu PHP, vrátane stredu;
  • Pri spustení skriptu sa vyžadujú pripojenia (include) a do zahrnutých súborov sa nič nepridá;
  • Súbor pripojenia je v rovnakom riadku ako súbor zahrnutia. Ak je v strede súboru, potom je rozsah globálny, a ak je v strede funkcie, potom je lokálny. Ešte raz zdôrazním, že include je to isté, ak ste vzali a skopírovali kód zo súboru v sekcii include.

Ďakujeme všetkým za prejavenú úctu a prajeme krásny víkend!

Po povýšení nie je rozšírenie pre prácu s MySQL (knižnica php_mysql.dll) prepojené s PHP a všetky ostatné funkcie nie sú dostupné. Na pripojenie knižnice je potrebné vykonať zmeny v konfiguračnom súbore php.ini a skopírovať ďalšie knižnice do adresára c:/windows/system32.

1. Vyberte PHP (Apache), kde sa nachádza php.ini (iba pre Apache 2.x)

Ak používate Apache verzie 2 alebo vyššej, nezabudnite do konfiguračného súboru Apache (httpd.conf) pridať direktívu PHPIniDir, ktorá vám umožní presne určiť, kam sa má súbor php.ini nainštalovať. Po pridaní smernice reštartujte Apache a reštartujte, aby sa program úspešne spustil.

PHPIniDir „c:/php“

Poznámka

Upozorňujeme, že pri písaní cesty sa používajú lomky, čo nie je typické pre Windows, v ktorom sa používajú spätné lomky. Vpravo je, že Apache aj PHP boli pôvodne vytvorené pre prácu na systémoch Unix, takže sa používajú samotné priame lomky. Na odstránenie možných problémov, ktoré je dôležité diagnostikovať, sa dôrazne odporúča používať rovné lomky v konfiguračných súboroch Apache a PHP vo formáte unix.

Tu je dôležité si uvedomiť, že konfiguračný súbor php.ini je uložený v adresári c:/php. Aby ste sa uistili, že Apache pozná konfiguračný súbor php.ini, pripojte funkciu phpinfo().

Zobrazenie informácií o konfigurácii PHP

echo phpinfo();
?>

Nájdite hodnoty riadkov v odstránených fialových tabuľkách "Cesta konfiguračného súboru (php.ini)". Je zodpovedná za špecifikáciu cesty k súboru php.ini, ktorý je vikorist, vrátane samotného súboru. Ak adresár nie je uvedený v tomto riadku, znamená to, že Apache nemohol nájsť súbor php.ini.

C:/php/php.ini // Správne – php.ini bolo nájdené a vikorizované
C:/windows/ // Nesprávne - php.ini sa nezobrazuje

Poznámka

V Apache staršie verzie direktívy PHPIniDir neexistovali a v dôsledku toho sa vyskytlo veľa chýb spojených s nesprávnym rozšírením súboru php.ini. Pre Apache verzie 1.3 musí byť php.ini nainštalovaný v systémovom adresári Windows, zvyčajne: c:/Windows. Použitie direktívy PHPIniDir v Apache verzie 2 vám umožňuje radikálne vyriešiť tento problém.

Po overení, že Apache používa správne php.ini, môžete pokračovať v ďalšej úprave pripojenia rozšírenia k MySQL.

2. Upravte smernicu extension_dir v PHP.INI

Direktíva extension_dir určuje adresár, v ktorom sú nainštalované knižnice rozšírení php, vrátane knižnice php_mysql.dll. Po nainštalovaní php do adresára c:/php sa knižnice rozšírení zvyčajne nainštalujú do podadresára ext (c:/php/ext). Overte, či je to pravda a nastavte správne hodnoty direktívy extension_dir.

Extension_dir = "c:/php/ext"

3. Povoľte rozšírenia pre prácu s MySQL

Na tento účel nájdete v php.ini nasledujúci riadok:

;extension=php_mysql.dll

A odstráňte z neho symbol komentára – bodku s bodkou.

Rozšírenie=php_mysql.dll

4. Skopírujte dodatočnú knižnicu libmysql.dll z c:/windows

Ak pripojíte PHP k Apache ako modul, potom na pripojenie rozšírenia MySQL musíte skopírovať dodatočnú knižnicu libmysql.dll z adresára c:/php do adresára c:/windows/system32. Ak sa PHP pripája k Apache ako doplnok CGI, kopírovanie knižnice doplnkov nie je potrebné.

5. Reštartujte Apache

Aby ste sa uistili, že všetky vykonané zmeny sú správne, reštartujte Apache.

6. Skontrolujte nainštalované rozšírenie

Aby ste sa uistili, že sa knižnica MySQL úspešne pripojila k PHP, otvorte funkciu phpinfo(). Pozrite sa na „fialové tabuľky“ a zistíte, že majú sekciu s názvami MySQL. Ak je takáto sekcia aktívna, znamená to, že rozšírenie sa úspešne pripojilo.

Kontrola interakcie medzi PHP a MySQL

1. Skontrolujte, či máte server MySQL.

Než začnete kontrolovať interakciu medzi PHP a MySQL, skontrolujte, aký MySQL server používate. Môžete to urobiť otvorením zoznamu služieb systému Windows: "Štart" | "Ovládací panel" | "Administrácia" | "služby". Nájdite službu pomocou názvu MySQL a pozrite sa, čo to je vo fáze robota (tretí stĺpec tabuľky).

Ďalší spôsob, ako zistiť, čo server MySQL beží: stlačte tlačidlá „Crtl“ + „Alt“ + „Del“ a na karte „Procesy“ nájdite proces s názvom mysqld.exe. Namiesto procesu mysqld.exe môžu bežať nasledujúce procesy: mysqld-nt.exe, mysqld-max-nt.exe, mysqld-debug.exe.

2. Preveďte vylepšený skript php

$dblocation = "127.0.0.1";
$dbname = "test" ;
$dbuser = "root";
$dbpasswd = "";

$dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd);
ak (!$dbcnx)
{
ozvena "" ;
VÝCHOD();
}
ak(!

{
ozvena "" ;
VÝCHOD();
}

ak(!$ver)
{
ozvena "

Mlieko v nápoji

" ;
VÝCHOD();
}
ozvena
mysql_result($ver, 0);
?>

Ak je test úspešný, na obrazovke sa zobrazí číslo verzie MySQL. V opačnom prípade sa na obrazovke zobrazí popis prijatých odmien.

Chyby, keď sú povolené rozšírenia pre prácu s MySQL

Pardons: Volanie na nedefinovanú funkciu

Všetky výhody, ktoré fráza "Call to undefined function" naznačuje, je, že rozšírenie PHP nie je povolené. Takéto chyby sa vyskytujú pri práci s funkciami MySQL, čo znamená, že nie je zahrnutá PHP knižnica pre prácu s MySQL – php_mysql.dll

Príklad oznámenia o zmenách:

Závažná chyba: Volanie nedefinovanej funkcie mysql_connect()

Ak chcete tento problém vyriešiť, prejdite na koniec štatistiky.

V phpinfo() nie je žiadny blok MySQL

Ak je všetko správne nastavené, ak sa rozšírenie pre prácu s MySQL nepripojí a nekontaktuje blok MySQL v zobrazenej funkcii phpinfo(), tak zmeňte verziu knižnice libmysql.dll, nainštalovanú v c:/windows/ systém32.

  1. Vyrovnajte veľkosť knižnice libmysql.dll, ktorá sa nachádza v c:/windows/system32, s veľkosťou knižnice s rovnakým názvom, ktorá bola nainštalovaná z PHP. Zápach sa vznáša, ale je rovnaký.
  2. Nájdite knižnice libmysql.dll v adresári c:/windows a vo všetkých podadresároch. Odstráňte všetky známe duplikáty a stiahnite si iba jednu požadovanú knižnicu – tú, ktorá bola skopírovaná z adresára c:/php.

Poznámka

Rovnaká knižnica libmysql.dll je dodávaná aj so serverom MySQL. Avšak pre rôzne knižnice a ak je samotná knižnica umiestnená v adresári c:/windows/system32 pod MySQL, PHP nemôže povoliť rozšírenia. Knižnica libmysql.dll sa môže automaticky skopírovať do c:/windows/system32, keď je nainštalovaný server MySQL. Prítomnosť knižnice v systémovom adresári, ktorá obsahuje starú verziu PHP, sa môže poškodiť.

Čistá strana overovacieho skriptu

Ako skript na kontrolu interakcie PHP s MySQL je skript často kontrolovaný na našej webovej stránke, pozri zoznam nižšie. Jeho význam v podobnom php skripte, ktorý sa vznášal nad štatistickou stránkou, sú symboly @ pred volaním funkcií mysql_connect() a mysql_select_db(). Tieto symboly sa používajú na potlačenie obmedzení prehliadača. Je vhodné ich používať na akejkoľvek webovej stránke na internete, aby ste sa vyhli zobrazovaniu dôverných informácií v prehliadači, v opačnom prípade pri dobre vyvinutých skriptoch nie je potrebné zobrazované informácie chrániť. To môže sťažiť diagnostiku problému.

PHP skript, ktorý kontroluje interakciu medzi PHP a MySQL serverom

$dblocation = "127.0.0.1";
$dbname = "test" ;
$dbuser = "root";
$dbpasswd = "";

$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
ak (!$dbcnx)
{
ozvena "

Bohužiaľ, server mySQL je nedostupný

" ;
VÝCHOD();
}
ak(!@
mysql_select_db ($dbname, $dbcnx))
{
ozvena "

Ľutujeme, databáza nie je dostupná

"
;
VÝCHOD();
}
$ver = mysql_query("SELECT VERSION()");
ak(!$ver)
{
ozvena "

Mlieko v nápoji

"
;
VÝCHOD();
}
ozvena
mysql_result($ver, 0);
?>

Ak je výsledkom vášho skriptu prázdna stránka, zvyčajne to znamená, že knižnica php_mysql.dll nie je pripojená k PHP. Ak chcete presnejšie diagnostikovať problém, postupujte podľa postupnosti akcií.

  1. Uistite sa, že namiesto databázy MySQL používate iné skripty PHP.
  2. Pred kliknutiami mysql_connect a mysql_select odstráňte symbol @, ktorý sa používa na potlačenie zobrazenia preferencií v prehliadači. Potom prehliadač zobrazí ďalšie informácie o škodách, ktoré pomôžu vyriešiť problém.

Problém: Nedá sa pripojiť k serveru MySQL na "127.0.0.1" (10061)

Keď skontrolujete overovací PHP skript, uvidíte podobnú chybu, ako je táto:


Nedá sa pripojiť k serveru MySQL na "127.0.0.1" (10061)
v C:\www\panel\htdocs\test.php v riadku 7

Upozorňujeme, že server MySQL nefunguje. Presnejšiu diagnostiku tohto problému možno nájsť v odseku 1 časti „Kontrola interakcie medzi PHP a MySQL“.

Problém: Prístup odmietnutý pre používateľa "root"@"localhost" (pomocou hesla: ÁNO)

Detekcia nástupu smrti:

Upozornenie: mysql_connect() :
Prístup odmietnutý pre používateľa "root"@"localhost" (pomocou hesla: ÁNO)
v C:\www\panel\htdocs\test.php v riadku 7

Uvedomte si, že sa pokúšate pripojiť k databáze MySQL s nesprávnym heslom. Overte hodnoty premennej $dbpasswd v overovacom skripte. Na propagačné účely je server MySQL nainštalovaný s prázdnym heslom root. Ak ste nastavili svoje vlastné root heslo, napíšte ho do ponuky $dbpasswd verifikačného skriptu.

Či už sa potrebujete pre prácu pripojiť k rozšíreniu PHP, môžete sa na našom fóre opýtať na inštaláciu a konfiguráciu Apache, PHP a knižníc rozšírení.