Igoris Guzey

Tai nėra tikslu, o likusios instrukcijos yra atnaujintos, nes nustatomi teisingi terminai ir optimalios parinktys. Tai yra pagrindinė sriegimo problema.

Užduotis: Pridėkite palaikymą/modulį GD2 prie PHP

Dar kartą pradedame treniruotis vietiniame kompiuteryje, o tada, žinoma, dirbame su „Windows“. Tiksliau Windows XP SP2. Tada galime įjungti GD2 iš PHP, sukonfigūruotą per prievadus, arba rankiniu būdu surinkti jį naudojant FreeBSD.

GD2 prijungimas prie PHP sistemoje Windows

Žinomas iš platinimo rinkinio:
\php-4.3.9-Win32.zip\php-4.3.9-Win32\extensions\
biblioteka php_gd2.dll, tada. 2 versija.
Ir nukopijuokite php_gd2.dll į c:\windows
Failo c:\windows\php.ini turime eilutę plėtinys=php_gd2.dll ir pašaliname komentarą.
Revantazhuemo Apache. Viskas.

Jei pirmiausia paimsite komentarą iš php.ini ir pagalvosite, ko užtenka, tada iš naujo paleidus Apache pasirodys diagnostika:
"Neįmanoma įkelti dinaminės bibliotekos "./php_gd.dll" – modulio instrukcijos nerasta."

GD2 prijungimas prie PHP naudojant FreeBSD

PHP jau įdiegtas iš prievadų

Tiksliau, ne tik PHP, bet viskas (php, MySQL, Apache, ...) buvo sureguliuota papildomiems prievadams.

# cd /usr/ports/lang/php4-extensions # make config pažymėkite langelį: "GD bibliotekos palaikymas" # make deinstall # make reinstall # apachectl -k graceful soft restart arba # apachectl restart grubus paleidimas iš naujo

PHP rankinis rinkinys

Kuriam tipui reikalingas pažangus JPEG ir ZLIB apdorojimas

JPEG palaikymo reguliavimas

Galimi variantai

JPEG iš prievado
# cd /usr/ports/graphics/jpeg # padaryti pašalinti katalogą dirbti/jpeg-6b nesivarginti padaryti įdiegti
JPEG iš platinimo
# 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

Turite įdiegti zlib palaikymą

Iš uosto
# cd /usr/ports/archivers/php4-zlib # make bibliotekos įdiegtos: /usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules

Mes renkame PHP

# cd /usr/dist/php-4.4.4 # ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd nepridedant katalogas GD biblioteka įdiegta PHP bibliotekoje. --with-jpeg-dir=/usr/ports/graphics/jpeg/work/jpeg-6b , kur jpeg yra prievade arba /usr/dist/jpeg-6b , kai jpeg yra paskirstyme --with-zlib -dir=/ usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules # make install && make clean

Testavimas

gif.php:png.phpjpg.php:gd_info.php:
RAKTAS VAL$val) echo"
$raktas $val"; ?>



Atitiktis praėjo

Diegiant JPEG biblioteką, po „make“ buvo pridėta komanda „make install“ su tvarka, kad nauji failai būtų /usr/local ir ten būtų automatiškai rasti.

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

Bijau, kad JPEG neprisijungs. Neigiamos diagnostikos nebuvo, bet ir rezultato.

Iš kvailumo tiksėjau kaip vejapjovės aklas, bandžiau pasakyti taip, paskui kitaip. Arba atsisiunčiant, tada atsisiunčiant, tada iš prievadų. Visą šį nenuoseklumą lydėjo platūs diegimai, dėl kurių atsirado perdangos, kurios atsirado PHP diegimo metu:

# ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local PHP wiki pakeitimas. # make install /usr/dist/php-4.4.4/ext/gd/gd.c:1151: neapibrėžta nuoroda į „gdImageRotate“, kur nurodytas GD katalogas, o nurodytam katalogui taikoma diagnostika. # ./ konfigūruoti - -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 Pakeiskite savo PHP wiki # make install .. . /usr/dist/php-4.4.4/ext/gd/gd.c:837: neapibrėžta nuoroda į „gdImageColorMatch“ /usr/dist/php-4.4.4/ext/gd/gd.c:1151 : neapibrėžta nuoroda į „gdImageRotate“ *** 1 klaidos kodas

Stenkitės tiksliai paruošti visus modulius ir tiksliai nukreipti į juos.

Pora stiklinių...

PHP neturi jokios integruotos importo infrastruktūros, tokios kaip python, java ar .net. Yra keletas būdų, kaip naudoti PHP bibliotekas.

    Sukompiliuokite juos į dvigubą PHP failą. Tai patogiausias būdas ir nesvarbu, nes neturite jokių specialių poreikių.

    Įdiekite juos kaip PHP modulius serveryje ir susiekite juos su PHP.ini. Pagal PHP programą šie plėtiniai ir PHP dalys yra prieinami nuo šiol. Tiesiog lengviau pridėti ir pašalinti neperkraunant paties PHP.

    Įdiekite PHP kodą kažkur serveryje ir pridėkite jį prie savo PHP scenarijaus.

    Išsaugokite bibliotekos kopiją savo projekte ir atsisiųskite ją iš savo PHP scenarijaus.

Pusė Pagrindiniame lygyje kodas yra interpretatoriaus dalis (statinis arba dinaminis), tačiau tai paprastas senas PHP kodas, į kurį įeina () ed jūsų projekte.

Jūsų tikslams galiu tik rekomenduoti gauti standartinį PHP paskirstymą (pasirinkite gerą Linux OS ir pasirinkite savo PHP). Be to, visos bibliotekos, kurių jums reikia kaip vertėjui, yra prieinamos kaip papildomi paketai, kurių sudėtingumas prarandamas už kasdien dirbančių žmonių.

„RedHat“ / „Centos“ galite paleisti:

yum įdiegti php php-memcached php-gd php-pecl

Šalutinė pastaba: yra visos kitos bibliotekos, kurias galbūt norėsite naudoti viskam, ypač gerai PHP sistemai, kuri skirta jums.

Veiksmo užpakalis:

  • Zend Framework
  • TortasPHP
  • Kodinis uždegimas
  • Ir tt...

(ne bet kokia tvarka, tik tie, kurie patenka į mintis)

Jūsų nuomone, jūs naudojote standartinį RPM ar panašų metodą kompiliavimui PHP aspektais ir plėtiniu, tada gera patikima struktūra tinka visam papildomam PHP bibliotekos kodui, kurio jums reikia.

Koks yra galutinis rezultatas: jūs sutelkiate dėmesį į produkto pristatymą, o ne į visą infrastruktūrą, kurią kitu atveju turėtumėte įdiegti ir eksploatuoti.

Puslapis php.ini analizuojamas ir paleidžiamas paleidus PHP (kiekvieną kartą komandų eilutėje, vieną kartą kiekvienam serveriui paleidžiamas Apache). Tai reiškia tiesioginį reguliavimą, apima nepriklausomus modulius, modulių reguliavimą ir kt.

Tiesą sakant, tam tikrus parametrus galite priskirti php.ini naudodami papildomą PHP funkciją ini_set(). Tačiau žmonėms geriau taisyti. Kiti gali būti įdiegti prieš paleidžiant scenarijų.

Dirbdami su Apache, galite pridėti eilučių prie .htaccess direktyvos Visiškai perskirsiu PHP.ini jūsų katalogui / virtualiam kompiuteriui.

(Būkite malonus, pataisykite mano sintaksę ir pašalinkite šią pastabą, jei ji neteisinga)

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

Šalis Atsakydamas į jūsų klausimą Nr. 6 apie jūsų biblioteką ir geriausią jos supakavimo būdą, raginu nedelsiant įvertinti bibliotekos poreikį. O jei tikrai dirbate, išsiaiškinkite, kaip dažniausiai žmonės susidoroja. Tai paprasta biblioteka, tereikia .php failo su gera svetaine.

Storinka Tai įmanoma, šiek tiek nedrąsiai, bet esu įsitikinęs, kad iš karto pasakėte teisingai.

Aš praleisiu šiek tiek laiko kalbėdamas apie PHP kalbos programavimą ir įstrigsiu prie tų plėtinių. CURL, tada. galimybė bendrauti su skirtingais serveriais naudojant skirtingus protokolus iš paties PHP scenarijaus.

Prieš pradėdamas žiūrėti į curl, noriu priminti, kad su jumis jau kalbėjome apie PHP, pavyzdžiui, medžiagoje apie Excel naudojimą PHP arba autentifikavimo galimybę PHP, o dabar pakalbėkime apie galimybę rašyti PHP.

Kas yra CURL?

CURL– Tai PHP funkcijų biblioteka, su kuria galite pridėti galios, pavyzdžiui, HTTP iš PHP scenarijaus. CURL palaiko tokius protokolus kaip HTTP, HTTPS, FTP ir kt. HTTP užklausas galima pateikti naudojant GET, POST ir PUT metodus.

CURL gali būti naudingas tais atvejais, kai reikia spustelėti nuotolinį scenarijų ir anuliuoti rezultatą arba tiesiog išsaugoti puslapio, kurį spustelėjote, HTML kodą, kad galėtumėte sužinoti savo būseną ir tą pačią prasmę, kurią galite atsiųskite užklausą scenarijaus kūrimo proceso metu

CURL bibliotekos prijungimas prie PHP

Norėdami naudoti CURL biblioteką, būtinai turite ją prijungti.

Pastaba! Pavyzdžiui, Windows 7 naudosime PHP 5.4.39, o kaip žiniatinklio serverį naudosime Apache 2.2.22.

Pirmas dalykas, kurį reikia padaryti, yra nukopijuoti bibliotekas. ssleay32.dll, libeay32.dll, libssh2.dll jie yra PHP kataloge, Windows sistemos kataloge ir C:\Windows\System32.

Tada php.ini apima php_curl.dll biblioteką. komentuoti puolimo eilutę

Biblioteka neprijungta

;extension=php_curl.dll

Biblioteka prijungta

Extension=php_curl.dll

Tai viskas, iš naujo paleiskite Apache, iškvieskite phpinfo() funkciją ir sėkmingai prisijungę pamatysite curl skyrių


Nors tokio dalyko nėra, tai tik reiškia, kad biblioteka nebuvo importuota – didžiausia priežastis, kodėl daugiau DLL nebuvo nukopijuota į Windows sistemos katalogą.

Butt CURL – nuotolinio valdymo pulto maitinimas ekrane

Tokiu atveju programos tiesiog įkelia nuotolinę pusę už HTTP protokolo naudodamos GET metodą ir rodo jį ekrane.

Turime bandomąjį katalogą dviejuose PHP failuose: test_curl.php ir test.php, test_curl.php ir scenarijų, kuriame naudosime curl, ir test.php kaip kitą scenarijų, kurį naudosime. Aš nuodugniai pakomentavau kodą.

Kodas test_curl.php

Kodo testas.php

1 antraštė"; pertrauka; 2 atvejis: aidas"<Н2>2 antraštė"; pertrauka; 3 atvejis: aidas"<Н3>3 antraštė"; pertrauka; )) ?>

Dėl to, jei paleisite test_curl.php, ekrane pamatysite užrašą „Antraštė 1“, galite eksperimentuoti su ID parametrų perdavimu ( adresu tsomu vipadku 2 arba 3).

CURL pavyzdys – spustelėkite nuotolinį scenarijų ir ištraukite rezultatą

Dabar pabandykime spustelėti scenarijų ir nuskaityti rezultatą, tada jį apdoroti; pavyzdžiui, naudokite POST metodą. Failų pavadinimai išliks tokie patys.

Kodas test_curl.php

Kodo testas.php

Jei paleisime test_curl.php, tada ekrane bus rodomas 111. 1,11 paimtas iš paveldėtojo į nuotolinį scenarijų, padaugintas iš 100.

Dabar pakalbėkime apie funkcijas ir konstantas prieš jas.

Dažniausiai naudojamos CURL funkcijos ir konstantos

  • curl_init – inicijuoja sesiją;
  • curl_close – Uždaryti seansą;
  • curl_exec - Vikonuє paklausti;
  • curl_errno - pasukamas atstatymo kodas;
  • curl_setopt – nustato seanso parametrą, pvz.:
    • CURLOPT_HEADER – 1 reikšmė reiškia, kad antraštes reikia pasukti;
    • CURLOPT_INFILESIZE - parametras, nurodantis failo dydį;
    • CURLOPT_VERBOSE – 1 reikšmė reiškia, kad CURL rodys ataskaitas apie visas operacijas;
    • CURLOPT_NOPROGRESS – įjungti eigos indikatorių 1 operacijos vertei;
    • CURLOPT_NOBODY – jei jums nereikia dokumento, o reikia tik antraščių, nustatykite reikšmę į 1;
    • CURLOPT_UPLOAD - failo įkėlimui į serverį;
    • CURLOPT_POST – Viconati įvedamas naudojant POST metodą;
    • CURLOPT_FTPLISTONLY – failų sąrašo pasirinkimas FTP serverio kataloge, reikšmė 1;
    • CURLOPT_PUT - Viconati įvedamas naudojant PUT metodą, reikšmė 1;
    • CURLOPT_RETURNTRANSFER – pasukite rezultatą nesikreipdami į naršyklę, reikšmė 1;
    • CURLOPT_TIMEOUT – maksimali valanda per sekundę;
    • CURLOPT_URL – biržos adreso įterpimas;
    • CURLOPT_USERPWD – rodoma eilutė su vartotojo vardais ir slaptažodžiu:;
    • CURLOPT_POSTFIELDS – POST užklausos duomenys;
    • CURLOPT_REFERER – nustato HTTP antraštės „Referer:“ reikšmę;
    • CURLOPT_USERAGENT – nustato HTTP antraštės reikšmę „User-Agent:“;
    • CURLOPT_COOKIE – vietoj antraštės „Cookie:“, kuri bus siunčiama su HTTP užklausa;
    • CURLOPT_SSLCERT - failo su sertifikatu PEM formatu pavadinimas;
    • CURLOPT_SSL_VERIFYPEER – reikšmė 0, kad būtų išvengta nuotolinio serverio sertifikato patikrinimo (už 1);
    • CURLOPT_SSLCERTPASSWD – sertifikato failo slaptažodis.
  • curl_getinfo – grąžina informaciją apie operaciją, kitas parametras gali būti įterpimo konstanta, kurios labiausiai reikia norint parodyti, pvz.:
    • CURLINFO_EFFECTIVE_URL – likęs paieškos URL;
    • CURLINFO_HTTP_CODE – likęs HTTP kodas;
    • CURLINFO_FILETIME - prašomo dokumento modifikavimo data;
    • CURLINFO_TOTAL_TIME – veikimo valanda sekundėmis;
    • CURLINFO_NAMELOOKUP_TIME – serverio vardo skyrimo valanda sekundėmis;
    • CURLINFO_CONNECT_TIME – valanda, praleista diegiant ryšį, sekundėmis;
    • CURLINFO_PRETRANSFER_TIME – valanda nuo operacijos pradžios iki parengties prieš faktinį duomenų perdavimą, sekundėmis;
    • CURLINFO_STARTTRANSFER_TIME – valanda nuo operacijos pradžios iki pirmojo duomenų baito perdavimo, sekundėmis;
    • CURLINFO_REDIRECT_TIME – valanda, praleista nukreipiant, sekundėmis;
    • CURLINFO_SIZE_UPLOAD – baitų skaičius įkeliant;
    • CURLINFO_SIZE_DOWNLOAD – baitų skaičius atsisiunčiant;
    • CURLINFO_SPEED_DOWNLOAD – vidutinis atsisiuntimo greitis;
    • CURLINFO_SPEED_UPLOAD – vidutinis greitis;
    • CURLINFO_HEADER_SIZE – bendras visų pašalintų antraščių dydis;
    • CURLINFO_REQUEST_SIZE – bendras visų pateiktų užklausų dydis;
    • CURLINFO_SSL_VERIFYRESULT – SSL sertifikato, kurio prašoma nustačius CURLOPT_SSL_VERIFYPEER, patikrinimo rezultatas;
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD – atsisiųsto dokumento dydis, skaitomas iš antraštės „Content-Length“;
    • CURLINFO_CONTENT_LENGTH_UPLOAD – įkeliamų duomenų dydis;
    • CURLINFO_CONTENT_TYPE – vietoj turinio tipo antraštės arba NULL, nes ši antraštė negalima.

Ataskaitą apie CURL funkcijas ir konstantas galite peržiūrėti oficialioje PHP svetainėje.

Žymėjimas: Suaktyvinta adaptyvi svetainės versija, kuri automatiškai prisitaiko prie mažo jūsų naršyklės dydžio ir pateikia informaciją apie svetainę, kad būtų lengviau skaityti. Aš gerai pažiūrėsiu!

Sėkmės visiems tinklaraščio skaitytojams Svetainėįjungta! Likusius 2 mėnesius mano darbas kompanijoje glaudžiai susijęs su grynu PHP (kita vertus, yra tabu dėl įvairių karkasų ir TVS), jau pamiršus Joomla :) kad ir toliau rašysiu vis daugiau.

Šiandien mes kalbėsime apie tai, kaip valdyti failų ryšį su PHP. Kaip tikriausiai pastebėjote, bet kuris svetainės variklis (Joomla, Wordpress, OpenCart, DLE ir viskas, viskas, viskas) susideda iš tūkstančių .php (ir ne tik php) failų ir visi jie sąveikauja tarpusavyje, o tai yra galingas ir kūrybiškas svetainės roboto mechanizmas.

Dabar pamirškite srautą ir atskleiskite kitą problemą: svetainėje turime daug puslapių, kiekvienas iš jų turi skirtingą meniu, svetainės antraštę ir poraštę. Natūralu, kad mes nekopijuosime to paties iš failo į failą, kitaip tai būtų sena 90-ųjų HTML svetainė. Viską padalijame mažiausiai į 4 failus:

  • index.php – pagrindinė puslapio dalis, šį failą galima keisti
  • menu.php – svetainės meniu
  • header.php – svetainės antraštė
  • footer.php – svetainės poraštė

Pavyzdžiui, be pagrindinio puslapio (index.php), mes taip pat galime turėti puslapius su įvairiais produktais (category.php) ir pačių produktų puslapius (produktas.php). Į šiuos puslapius rankiniu būdu įtraukiame failus menu.php, header.php, footer.php. Šio metodo problema yra ta, kad kai pridedame naują meniu elementą, viską pridedame vieną kartą (menu.php), o ne 3 kartus (index.php, product.php, category.php).

Na, o maistas kaltas: "Kaip gauti failą prieš PHP?". Šiems tikslams PHP turi 2 instrukcijas:

Ir jų žygiai:

Grąžinu pagarbą tiems, kurie apima ir reikalauja - tai ne funkcijos, tai yra vadinamosios konstrukcijos, kurioms nereikia ginklų.

Kodėl yra skirtumas tarp įtraukti ir reikalauti?

įtrauktiі reikalauti– tai absoliučiai tas pats, tik su vienu skirtumu, kad migruojant (pavyzdžiui, jei nurodytas failas nežinomas ir jo negalima prijungti) įtraukti, pavyzdžiui, migruojant Įspėjimas Po to svetainė veiks toliau ir, kaip matote, reikės to visiškai pašalinti svetainę iš svetainės.

Reikalavimo pareiškimas yra radikalus ir griežtas. Kas geriau už vikorystuvat - tikiu, kad dėl puikios priežasties rekomenduoju visada rinktis griežčiausią variantą, kad reikia, bet ypač žodis įtraukti yra priimtinesnis :)

include_once ir request_once – išjunkite tą patį, ką įtraukti (įtraukti failą), tačiau tokiu atveju įsitikinkite, kad failas būtų įtrauktas ne daugiau kaip vieną kartą. Ypač sunku jų atsikratyti, nes projekte dirba daug žmonių ir reikia pasirūpinti, kad failas nebūtų įkeltas per daug kartų.

Uvaga:

įtraukti_vieną kartąі reikalauti_vieną kartą– dirbti geriau ir naudoti daugiau RAM, neįtraukiant ir nereikalaujant. Gana logiška ir su tuo susiję, kad jie turi atsiminti visus prijungtus failus ir prieš pat prisijungimo laiką patikrinti, ar koks nors failas jau prijungtas.

Leiskite man aiškiai parodyti, kaip failų įtraukimas veikia PHP:

Įtraukiant failus (pvz.: html, txt, php, xml ir kt.), jiems skirtas PHP scenarijus tiesiog įterpiamas įtraukimo vietoje. Tada įtraukite (ir aš taip pat gerbiu reikalavimą, taigi tai tas pats) - viskas tas pats, nukopijavote šį kodą (CTRL + C) ir įklijavote (CTRL + V) į failą (pavyzdžiui, gaminyje. php ) , o tada išsaugotas ir paleistas kaip anksčiau: http://your_site.net/product.php

Norėdami atskirti pagrindinius failus, pvz., produktas.php, nuo anksčiau įtrauktų (menu.php, header.php, footer.php), pervardykite įtrauktus failus taip: menu.inc.php, header .inc.php , footer.inc.php. Taigi, nuėję į aplanką, iš karto atskirsime pagrindinius failus ir papildomus.

Uvaga:

Ši technika (add inc) skirta tik vizualiniam aiškumui ir pagrindiniams funkciniams gebėjimams. Nors vizualinis nuoseklumas taip pat yra svarbus, visada struktūrizuokite ir dirbkite tuo pačiu stiliumi.

įtraukti su atvirkštinėmis reikšmėmis

Ar prisimeni raktinį žodį? Taigi PHP ašis yra tokia laukinė, kaip grįžti į įtraukimo vidurį. Aš šito visai nebandžiau ir dar net negalvojau, kad kiti galėtų su tuo kovoti, kitaip galima, pabandyk kai kurių užpakalį.php:

Mes įtraukiame kai kuriuos.php:

// Įveskite eilutę: PHP ?>

Dar keli faktai

  • Galite įtraukti failus į bet kurį PHP kodą, įskaitant vidurį;
  • Paleidus scenarijų prašoma užmegzti ryšius (įtraukti), o į įtrauktus failus nieko nepridedama;
  • Ryšio failas yra toje pačioje eilutėje kaip įtraukimo failas. Jei jis yra failo viduryje, tada apimtis yra globali, o jei ji yra funkcijos viduryje, tada ji yra lokali. Dar kartą pabrėšiu, kad įtraukti yra tas pats, jei paėmėte ir nukopijavote kodą iš failo įtraukimo skiltyje.

Ačiū visiems už pagarbą ir nuostabaus savaitgalio!

Po paaukštinimo darbo su MySQL plėtinys (biblioteka php_mysql.dll) nėra prijungtas prie PHP ir visos kitos funkcijos nepasiekiamos. Norėdami prijungti biblioteką, turite atlikti php.ini konfigūracijos failo pakeitimus ir nukopijuoti papildomas bibliotekas į c:/windows/system32 katalogą.

1. Pasirinkite PHP (Apache), kur yra php.ini (tik Apache 2.x)

Jei naudojate 2 ar naujesnę Apache versiją, būtinai į Apache konfigūracijos failą (httpd.conf) pridėkite direktyvą PHPIniDir, kuri leidžia tiksliai nurodyti, kur įdiegti php.ini failą. Pridėję direktyvą, iš naujo paleiskite Apache ir paleiskite iš naujo, kad programa būtų sėkmingai paleista.

PHPIniDir „c:/php“

Pastaba

Atkreipkite dėmesį, kad rašant kelią naudojami pasvirieji brūkšniai, o tai nebūdinga Windows, kurioje naudojami pasvirieji brūkšniai. Dešinėje yra tai, kad tiek Apache, tiek PHP iš pradžių buvo sukurti dirbti Unix sistemose, todėl naudojami patys tiesioginiai pasvirieji brūkšniai. Norint pašalinti galimas problemas, kurias svarbu diagnozuoti, Unix formato Apache ir PHP konfigūracijos failuose primygtinai rekomenduojama naudoti tiesius brūkšnius.

Čia svarbu atsiminti, kad php.ini konfigūracijos failas išsaugomas c:/php kataloge. Norėdami užtikrinti, kad Apache žino php.ini konfigūracijos failą, prijunkite funkciją phpinfo().

Rodoma PHP konfigūracijos informacija

echo phpinfo ();
?>

Raskite eilučių reikšmes pašalintose violetinėse lentelėse „Konfigūracijos failo (php.ini) kelias“. Ji yra atsakinga už kelio į php.ini failą, kuris yra vikorist, nurodymą, įskaitant patį failą. Jei katalogo nėra šioje eilutėje, tai reiškia, kad Apache nepavyko rasti php.ini failo.

C:/php/php.ini // Teisingai – rasta ir sutvarkyta php.ini
C:/windows/ // Neteisinga – php.ini nerodoma

Pastaba

„Apache“ programoje ankstesnės PHPIniDir direktyvos versijos neegzistavo, todėl buvo daug klaidų, susijusių su netinkamu php.ini failo išplėtimu. Apache 1.3 versijai php.ini turi būti įdiegta Windows sistemos kataloge, paprastai: c:/Windows. Naudojant PHPIniDir direktyvą Apache 2 versijoje, galite radikaliai išspręsti šią problemą.

Įsitikinę, kad „Apache“ naudoja teisingą php.ini, galite tęsti tolesnį redagavimą, kad prijungtumėte plėtinį prie „MySQL“.

2. Sureguliuokite PHP.INI direktyvą extension_dir

Direktyva extension_dir nurodo katalogą, kuriame yra įdiegtos php plėtinių bibliotekos, įskaitant php_mysql.dll biblioteką. Įdiegę php į c:/php katalogą, plėtinių bibliotekos paprastai bus įdiegtos ext pakatalogyje (c:/php/ext). Patikrinkite, ar tai tiesa, ir nustatykite teisingas direktyvos extension_dir reikšmes.

Extension_dir = "c:/php/ext"

3. Įgalinkite plėtinius darbui su MySQL

Norėdami tai padaryti, php.ini galite rasti šią eilutę:

;extension=php_mysql.dll

Ir pašalinkite nuo jo komentaro simbolį – tašką su tašku.

Extension=php_mysql.dll

4. Nukopijuokite papildomą biblioteką libmysql.dll iš c:/windows

Jei PHP prijungiate prie Apache kaip modulį, tada norint prijungti MySQL plėtinį, reikia nukopijuoti papildomą biblioteką libmysql.dll iš c:/php katalogo į c:/windows/system32 katalogą. Jei PHP prisijungia prie „Apache“ kaip CGI priedas, tada kopijuoti priedų bibliotekos nereikia.

5. Iš naujo paleiskite „Apache“.

Norėdami įsitikinti, kad visi pakeitimai yra teisingi, iš naujo paleiskite „Apache“.

6. Patikrinkite įdiegtą plėtinį

Norėdami įsitikinti, kad MySQL biblioteka sėkmingai prisijungė prie PHP, atidarykite phpinfo() funkciją. Pažvelkite į „purpurines lenteles“ ir pamatysite, kad jose yra skyrius su MySQL pavadinimais. Jei tokia sekcija aktyvi, tai reiškia, kad plėtinys sėkmingai prisijungė.

Tikrinama PHP ir MySQL sąveika

1. Patikrinkite, ar turite MySQL serverį.

Prieš pradėdami tikrinti PHP ir MySQL sąveiką, patikrinkite, kokį MySQL serverį naudojate. Tai galite padaryti atidarę „Windows“ paslaugų sąrašą: "Pradėti" | "Valdymo skydas" | "Administravimas" | "Paslaugos". Raskite paslaugą naudodami MySQL pavadinimą ir pažiūrėkite, kas tai yra roboto stadijoje (trečias lentelės stulpelis).

Kitas būdas pamatyti, ką veikia MySQL serveris: paspauskite „Crtl“ + „Alt“ + „Del“ mygtukus ir skirtuke „Procesai“ raskite procesą, vadinamą mysqld.exe. Vietoj mysqld.exe proceso gali veikti šie procesai: mysqld-nt.exe, mysqld-max-nt.exe, mysqld-debug.exe.

2. Konvertuokite atnaujintą php scenarijų

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

$dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd);
jei (!$dbcnx)
{
aidas "" ;
išeiti ();
}
jei (!

{
aidas "" ;
išeiti ();
}

if(!$ver)
{
aidas "

Pienas prie gėrimo

" ;
išeiti ();
}
aidas
mysql_result($ver, 0);
?>

Jei bandymas bus sėkmingas, ekrane bus rodomas MySQL versijos numeris. Kitu atveju ekrane bus rodomas gautų apdovanojimų aprašymas.

Klaidos, kai įjungti plėtiniai, skirti dirbti su MySQL

Atleiskite: skambinkite į neapibrėžtą funkciją

Visi pranašumai, kuriuos nurodo frazė „Skambinkite į neapibrėžtą funkciją“, yra tai, kad PHP plėtinys neįjungtas. Tokios klaidos atsiranda dirbant su MySQL funkcijomis, o tai reiškia, kad PHP biblioteka, skirta darbui su MySQL – php_mysql.dll – neįtraukta

Pranešimo apie pakeitimus pavyzdys:

Lemtinga klaida: iškvietimas į neapibrėžtą funkciją mysql_connect()

Norėdami išspręsti šią problemą, eikite į statistikos apačią.

phpinfo() nėra MySQL bloko

Jei viskas nustatyta teisingai, jei plėtinys darbui su MySQL neprisijungia ir nesusisiekia su MySQL bloku rodomoje phpinfo() funkcijoje, pakeiskite bibliotekos libmysql.dll versiją, įdiegtą c:/windows/ sistema32.

  1. Sulyginkite bibliotekos libmysql.dll, esančios c:/windows/system32, dydį su to paties pavadinimo bibliotekos, kuri buvo įdiegta iš PHP, dydžiu. Smarvė sklinda, bet yra lygi.
  2. Raskite libmysql.dll bibliotekas c:/windows kataloge ir visuose pakatalogiuose. Ištrinkite visus žinomus dublikatus ir atsisiųskite tik vieną reikalingą biblioteką – tą, kuri buvo nukopijuota iš c:/php katalogo.

Pastaba

Ta pati biblioteka libmysql.dll taip pat pateikiama kartu su MySQL serveriu. Tačiau įvairioms bibliotekoms ir jei pati biblioteka yra c:/windows/system32 kataloge pagal MySQL, PHP negali įjungti plėtinių. Įdiegus MySQL serverį, libmysql.dll biblioteką galima automatiškai nukopijuoti į c:/windows/system32. Sistemos kataloge esanti biblioteka, kurioje yra sena PHP versija, gali būti sugadinta.

Švarioji patvirtinimo scenarijaus pusė

Kaip scenarijus, skirtas PHP sąveikai su MySQL patikrinti, scenarijus dažnai peržiūrimas mūsų svetainėje, žr. toliau pateiktą sąrašą. Jo reikšmė panašiame php scenarijuje, esančiame virš statistinio puslapio, yra simboliai @ prieš iškviečiant funkcijas mysql_connect() ir mysql_select_db(). Šie simboliai naudojami naršyklės apribojimams slopinti. Patartina juos naudoti bet kurioje interneto svetainėje, kad naršyklėje nebūtų rodoma konfidenciali informacija, kitu atveju su gerai išvystytais scenarijais nereikia saugoti rodomos informacijos. Dėl to gali būti sunku diagnozuoti problemą.

PHP scenarijus, kuris tikrina PHP ir MySQL serverio sąveiką

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

$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
jei (!$dbcnx)
{
aidas "

Deja, mySQL serveris nepasiekiamas

" ;
išeiti ();
}
jei(!@
mysql_select_db ($dbname, $dbcnx))
{
aidas "

Atsiprašome, duomenų bazė nepasiekiama

"
;
išeiti ();
}
$ver = mysql_query("SELECT VERSION()");
if(!$ver)
{
aidas "

Pienas prie gėrimo

"
;
išeiti ();
}
aidas
mysql_result($ver, 0);
?>

Jei scenarijaus rezultatas yra tuščias puslapis, tai paprastai reiškia, kad php_mysql.dll biblioteka nėra prijungta prie PHP. Norėdami tiksliau diagnozuoti problemą, vadovaukitės veiksmų seka.

  1. Įsitikinkite, kad naudojate kitus PHP scenarijus, o ne MySQL duomenų bazę.
  2. Pašalinkite @ simbolį prieš mysql_connect ir mysql_select paspaudimus, kurie naudojami naršyklės nuostatų rodymo slopinimui. Po to naršyklė parodys papildomą informaciją apie žalą, kuri padės išspręsti problemą.

Problema: nepavyksta prisijungti prie „MySQL“ serverio „127.0.0.1“ (10061)

Kai tikrinate patvirtinimo PHP scenarijų, matote panašią klaidą:


Nepavyksta prisijungti prie „MySQL“ serverio „127.0.0.1“ (10061)
C:\www\panel\htdocs\test.php 7 eilutėje

Atkreipkite dėmesį, kad MySQL serveris neveikia. Tikslesnę šios problemos diagnozę galite rasti skyriaus „PHP ir MySQL sąveikos tikrinimas“ 1 pastraipoje.

Problema: vartotojo "root"@"localhost" prieiga uždrausta (naudojant slaptažodį: TAIP)

Mirties pradžios nustatymas:

Įspėjimas: mysql_connect() :
Prieiga uždrausta vartotojui "root"@"localhost" (naudojant slaptažodį: TAIP)
C:\www\panel\htdocs\test.php 7 eilutėje

Atminkite, kad bandote prisijungti prie MySQL duomenų bazės naudodami neteisingą slaptažodį. Patikrinkite $dbpasswd kintamojo vertes patvirtinimo scenarijuje. Reklamos tikslais MySQL serveris įdiegiamas su tuščiu root slaptažodžiu. Jei nustatėte savo root slaptažodį, parašykite jį patvirtinimo scenarijaus meniu $dbpasswd.

Nesvarbu, ar darbui reikia prisijungti prie PHP plėtinio, mūsų forume galite paklausti, kaip įdiegti ir konfigūruoti Apache, PHP ir plėtinių bibliotekas.