Igor Guzey

Acest lucru nu este exact și instrucțiunile reziduale sunt actualizate, deoarece sunt determinați termenii corecti și opțiunile optime. Aceasta este o problemă centrală de filetare.

Sarcină: Adăugați suport/modul GD2 la PHP

Încă o dată, începem să ne antrenăm pe un computer local și apoi, desigur, lucrăm sub Windows. Mai precis Windows XP SP2. Apoi putem activa GD2 din PHP, configurat prin porturi sau îl putem asambla manual sub FreeBSD.

Conectarea GD2 la PHP sub Windows

Cunoscut din trusa de distribuție:
\php-4.3.9-Win32.zip\php-4.3.9-Win32\extensions\
biblioteca php_gd2.dll, atunci. Versiunea 2.
Și copiați php_gd2.dll în c:\windows
În fișierul c:\windows\php.ini avem extensia de linie=php_gd2.dll și eliminăm comentariul.
Revantazhuemo Apache. Asta este.

Dacă iei mai întâi comentariul de pe php.ini și te gândești la ce este suficient, atunci după repornirea Apache va apărea diagnosticarea:
„Nu se poate încărca biblioteca dinamică „./php_gd.dll” - Instrucțiuni pentru modul nu au fost găsite.”

Conectarea GD2 la PHP sub FreeBSD

PHP este deja instalat din porturi

Mai precis, nu doar PHP, ci totul (php, MySQL, Apache, ...) a fost reglat pentru porturi suplimentare.

# cd /usr/ports/lang/php4-extensions # make config bifați caseta: „GD library support” # make deinstall # make reinstall # apachectl -k graceful soft restart sau # apachectl restart rough restart

Colectare manuală PHP

Care tip necesită procesare avansată a JPEG și ZLIB

Ajustarea suportului JPEG

Opțiuni posibile

JPEG din port
# cd /usr/ports/graphics/jpeg # faceți eliminarea directorului să funcționeze/jpeg-6b nu vă deranjați să faceți instalarea
JPEG din distribuție
# 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

Trebuie să instalați suportul zlib

Din port
# cd /usr/ports/archivers/php4-zlib # make Bibliotecile au fost instalate în: /usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules

Colectăm PHP

# cd /usr/dist/php-4.4.4 # ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd fără a adăuga o director Biblioteca GD este instalată în biblioteca PHP. --with-jpeg-dir=/usr/ports/graphics/jpeg/work/jpeg-6b , unde jpeg este pe port sau /usr/dist/jpeg-6b , când jpeg este pe distribuție --with-zlib -dir=/ usr/ports/archivers/php4-zlib/work/php-4.4.4/ext/zlib/modules # make install && make clean

Testare

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



Conformitatea a trecut

La instalarea bibliotecii JPEG, după „make”, a fost adăugată comanda „make install” cu ordinea ca fișierele noi să fie localizate în /usr/local și apoi găsite automat acolo

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

Mi-e teamă că JPEG nu se va conecta. Nu au existat diagnostice negative, dar nici un rezultat.

Din prostie, ticăiam ca orbul unei mașini de tuns iarbă, încercând să spun așa, apoi cutare. Fie prin descărcare, apoi prin descărcare, apoi din porturi. Toată această inconsecvență a fost însoțită de instalări extinse, care au dus la suprapuneri care au apărut la momentul instalării PHP:

# ./configure --with-mysql --with-apache=/usr/dist/apache_1.3.37 --enable-memory-limit --with-gd=/usr/local Modificare pentru wiki PHP. # make install /usr/dist/php-4.4.4/ext/gd/gd.c:1151: referință nedefinită la „gdImageRotate” în care este specificat directorul pentru GD, iar diagnosticele sunt aplicate directorului specificat. # . /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 Schimbați-vă wiki PHP # make instalați .. . /usr/dist/php-4.4.4/ext/gd/gd.c:837: referință nedefinită la `gdImageColorMatch" /usr/dist/php-4.4.4/ext/gd/gd.c: 1151: referință nedefinită la `gdImageRotate" *** Cod de eroare 1

Încercați să pregătiți toate modulele cu acuratețe și să le indicați cu precizie.

Câteva pahare...

PHP nu are nicio infrastructură de import încorporată, cum ar fi python, java sau .net. Există mai multe moduri de a utiliza bibliotecile PHP.

    Compilați-le într-un fișier PHP dublu. Aceasta este metoda cea mai convenabilă și nu este importantă pentru că nu aveți nevoi speciale.

    Instalați-le ca module PHP pe server și conectați-le la PHP.ini. Conform programului PHP, aceste extensii și părți ale PHP sunt disponibile de acum înainte. Este mai ușor să adăugați și să eliminați fără a fi nevoie să reporniți PHP în sine.

    Instalați codul PHP pe server undeva și adăugați-l la scriptul dvs. PHP.

    Salvați o copie a bibliotecii în proiectul dvs. și descărcați-o din scriptul PHP.

Partea La nivel de bază, codul face parte din interpret (static sau dinamic), dar este un simplu cod PHP vechi care include () ed în proiectul dumneavoastră.

Pentru scopurile dvs., vă pot recomanda doar să obțineți distribuția standard PHP (alegeți un sistem de operare Linux bun și alegeți PHP-ul dvs.). De asemenea, toate bibliotecile de care ai nevoie ca interpret sunt disponibile ca pachete suplimentare, iar complexitatea cărora se pierde în urma celor care lucrează zilnic.

Pentru RedHat/Centos puteți rula:

yum instalează php php-memcached php-gd php-pecl

Notă secundară: Există toate celelalte biblioteci pe care ați putea dori să le utilizați pentru orice, în special pentru un cadru PHP bun, care este totul pentru dvs.

Butts de acțiune:

  • Cadrul Zend
  • CakePHP
  • Codeagniter
  • etc...

(nu in orice ordine, doar cei care cad in ganduri)

În opinia dvs., ați folosit RPM standard sau abordare similară pentru compilare în aspecte PHP și extensie, atunci o structură bună de încredere este potrivită pentru a include tot codul suplimentar de bibliotecă PHP de care aveți nevoie.

Care este rezultatul final: vă concentrați pe livrarea produsului, și nu pe întreaga infrastructură pe care altfel ar trebui să o instalați și să o operați.

Pagina php.ini este analizată și lansată la pornirea PHP (de fiecare dată pentru linia de comandă, o dată pe server este lansat în Apache). Aceasta înseamnă reglare directă, include module independente, reglare a modulelor etc.

De fapt, puteți realoca anumiți parametri în php.ini folosind funcția suplimentară ini_set() în PHP. Cu toate acestea, este mai bine ca oamenii să facă ajustări. Altele pot fi instalate înainte de a rula scriptul.

Când lucrați sub Apache, puteți adăuga rânduri la directiva .htaccess Voi realoca complet PHP.ini directorului/gazdă virtuală.

(Fii amabil, corectează-mi sintaxa și elimină această notă, dacă nu este corectă)

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

Partea Ca răspuns la întrebarea dvs. nr. 6 despre biblioteca dvs. și cea mai bună modalitate de a o împacheta, vă încurajez să apreciați imediat necesitatea unei biblioteci. Și dacă lucrezi cu adevărat, află care este cel mai comun mod în care oamenii se descurcă. Este o bibliotecă simplă, tot ce aveți nevoie este un fișier .php cu un site web bun.

Storinka Se poate, puțin cam indiscret, dar sunt convins că ai spus-o pe cea potrivită imediat.

Voi petrece puțin timp vorbind despre programarea limbajului PHP și voi rămâne blocat în aceste extensii. RĂSUCI, apoi. capacitatea de a interacționa cu diferite servere folosind protocoale diferite din scriptul PHP însuși.

Înainte de a începe să ne uităm la curl, vreau să vă reamintesc că am abordat deja PHP cu dvs., de exemplu, în materialul despre utilizarea Excel în PHP sau despre posibilitatea de autentificare în PHP, iar acum să vorbim despre capacitatea de a scrie în PHP. PHP.

Ce este CURL?

RĂSUCI– Aceasta este o bibliotecă de funcții PHP, cu care puteți adăuga putere, de exemplu, la HTTP dintr-un script PHP. CURL acceptă protocoale precum HTTP, HTTPS, FTP și altele. Solicitările HTTP pot fi făcute folosind metodele GET, POST și PUT.

CURL poate fi util în situațiile în care trebuie să faceți clic pe un script de la distanță și să anulați rezultatul sau pur și simplu să salvați codul HTML al paginii pe care faceți clic, astfel încât să puteți afla starea dvs. precum și același sens pe care îl puteți trimiteți o solicitare în timpul procesului de scriptare

Conectarea bibliotecii CURL la PHP

Pentru a utiliza biblioteca CURL, trebuie neapărat să o conectați.

Notă! De exemplu, vom folosi PHP 5.4.39 pe Windows 7, iar ca server Web vom folosi Apache 2.2.22.

Primul lucru pe care trebuie să-l faceți este să copiați bibliotecile. ssleay32.dll, libeay32.dll, libssh2.dll sunt localizate în directorul PHP, în directorul de sistem Windows și în C:\Windows\System32.

Apoi php.ini include biblioteca php_curl.dll. comentează rândul ofensiv

Biblioteca nu este conectată

;extension=php_curl.dll

Biblioteca este conectată

Extensie=php_curl.dll

Gata, reporniți Apache, apelați funcția phpinfo() și odată ce aveți o conexiune reușită, veți vedea secțiunea curl


Deși nu există așa ceva, înseamnă doar că biblioteca nu a fost importată, cel mai mare motiv pentru care mai multe DLL-uri nu au fost copiate în directorul de sistem Windows.

Butt CURL - pornirea telecomenzii pentru afișare pe ecran

În acest caz, aplicațiile pur și simplu încarcă partea de la distanță din spatele protocolului HTTP folosind metoda GET și o afișează pe ecran.

Avem un director de test în două fișiere PHP: test_curl.php și test.php, test_curl.php și un script în care vom folosi curl și test.php ca un script suplimentar, pe care îl vom folosi. Am comentat temeinic codul.

Cod test_curl.php

Cod test.php

Titlul 1"; pauză; cazul 2: ecou"<Н2>Titlul 2"; pauză; cazul 3: ecou"<Н3>Titlul 3"; pauză; )) ?>

Ca urmare, dacă rulați test_curl.php, veți vedea „Titlul 1” scris pe ecran, puteți experimenta cu transmiterea parametrilor de identificare ( la tsomu vipadku 2 sau 3).

Exemplu CURL – faceți clic pe scriptul de la distanță și extrageți rezultatul

Acum să încercăm să facem clic pe script și să recuperăm rezultatul și apoi să îl procesăm; de exemplu, să folosim metoda POST. Numele fișierelor vor rămâne aceleași.

Cod test_curl.php

Cod test.php

Dacă rulăm test_curl.php, atunci 111 va fi afișat pe ecran. 1.11 luat de la moștenitorul scriptului de la distanță, înmulțit cu 100.

Acum să vorbim despre funcții și constante înaintea lor.

Funcții și constante CURL utilizate în mod obișnuit

  • curl_init – inițializează sesiunea;
  • curl_close – Închideți sesiunea;
  • curl_exec - Vikonuє ask;
  • curl_errno - rotește codul de resetare;
  • curl_setopt - Setează un parametru pentru sesiune, de exemplu:
    • CURLOPT_HEADER – valoarea 1 înseamnă că anteturile trebuie rotite;
    • CURLOPT_INFILESIZE - parametru pentru specificarea dimensiunii fișierului;
    • CURLOPT_VERBOSE - valoarea 1 înseamnă că CURL va afișa rapoarte despre toate operațiunile;
    • CURLOPT_NOPROGRESS – activați indicatorul de progres pentru valoarea de operare 1;
    • CURLOPT_NOBODY – dacă nu aveți nevoie de un document, ci aveți nevoie doar de anteturi, setați valoarea la 1;
    • CURLOPT_UPLOAD - pentru încărcarea unui fișier pe server;
    • CURLOPT_POST - Viconati se introduce folosind metoda POST;
    • CURLOPT_FTPLISTONLY – selectarea unei liste de fișiere din directorul serverului FTP, valoarea 1;
    • CURLOPT_PUT - Viconati se introduce folosind metoda PUT, valoarea 1;
    • CURLOPT_RETURNTRANSFER - roteste rezultatul fara a merge in browser, valoarea 1;
    • CURLOPT_TIMEOUT – maxim oră pe secundă;
    • CURLOPT_URL – introducerea adresei pentru schimb;
    • CURLOPT_USERPWD - rând cu nume de utilizator și parola în vedere:;
    • CURLOPT_POSTFIELDS – date pentru solicitarea POST;
    • CURLOPT_REFERER - setează valoarea antetului HTTP „Referer:”;
    • CURLOPT_USERAGENT - setează valoarea antetului HTTP „User-Agent:”;
    • CURLOPT_COOKIE - în loc de antetul „Cookie:” care va fi trimis împreună cu solicitarea HTTP;
    • CURLOPT_SSLCERT - numele fișierului cu certificat în format PEM;
    • CURLOPT_SSL_VERIFYPEER – valoarea 0 pentru a preveni verificarea certificatului de server la distanță (în spatele 1);
    • CURLOPT_SSLCERTPASSWD – parola pentru fișierul de certificat.
  • curl_getinfo - Returnează informații despre operație, un alt parametru poate fi o constantă pentru inserare, care este cel mai necesar pentru a afișa, de exemplu:
    • CURLINFO_EFFECTIVE_URL - adresa URL de căutare rămasă;
    • CURLINFO_HTTP_CODE - codul HTTP rămas;
    • CURLINFO_FILETIME - data modificării documentului solicitat;
    • CURLINFO_TOTAL_TIME - oră de funcționare în secunde;
    • CURLINFO_NAMELOOKUP_TIME - ora de rezoluție a numelui serverului în secunde;
    • CURLINFO_CONNECT_TIME - oră petrecută la instalarea conexiunii, în secunde;
    • CURLINFO_PRETRANSFER_TIME - ora de la începerea operațiunii până la pregătirea înainte de transferul efectiv de date, în secunde;
    • CURLINFO_STARTTRANSFER_TIME - oră de la începutul operațiunii până la transferul primului octet de date, în secunde;
    • CURLINFO_REDIRECT_TIME - oră petrecută la redirecționare, în secunde;
    • CURLINFO_SIZE_UPLOAD - numărul de octeți la încărcare;
    • CURLINFO_SIZE_DOWNLOAD - numărul de octeți la descărcare;
    • CURLINFO_SPEED_DOWNLOAD - viteza medie de descărcare;
    • CURLINFO_SPEED_UPLOAD - viteză medie;
    • CURLINFO_HEADER_SIZE - dimensiunea totală a tuturor antetelor eliminate;
    • CURLINFO_REQUEST_SIZE - dimensiunea totală a tuturor solicitărilor trimise;
    • CURLINFO_SSL_VERIFYRESULT — rezultatul verificării certificatului SSL solicitat prin setarea CURLOPT_SSL_VERIFYPEER;
    • CURLINFO_CONTENT_LENGTH_DOWNLOAD - dimensiunea documentului descărcat, citită din antetul Content-Length;
    • CURLINFO_CONTENT_LENGTH_UPLOAD - dimensiunea datelor de încărcat;
    • CURLINFO_CONTENT_TYPE - în loc de antetul tip conținut, sau NULL, deoarece acest antet nu este posibil.

Puteți vizualiza un raport despre funcțiile și constantele CURL pe site-ul oficial PHP.

Notaţie: Este activată versiunea adaptivă a site-ului, care se adaptează automat la dimensiunea redusă a browserului dumneavoastră și oferă detalii site-ului pentru ușurință de citire. O sa ma uit bine la el!

Mult succes tuturor cititorilor blogului Site pe! În restul de 2 luni, munca mea pentru companie este strâns legată de PHP pur (pe de altă parte, există tabuuri pe diverse cadre și CMS), uitând deja Joomla :) așa că voi continua să scriu din ce în ce mai mult.

Astăzi vom vorbi despre cum să controlăm conexiunea fișierelor la PHP. După cum probabil ați observat, orice motor pentru un site web (Joomla, Wordpress, OpenCart, DLE și tot, totul, totul) constă din mii de fișiere .php (și nu doar php) și toate interacționează între ele, ceea ce este mecanism de robot puternic și creativ pentru site-ul web.

Acum uitați de trafic și dezvăluie o problemă diferită: avem o mulțime de pagini pe site, fiecare dintre ele având un meniu diferit, antet și subsol al site-ului. Desigur, nu vom copia același lucru din fișier în fișier, altfel ar fi un site HTML vechi din anii 90. Cel puțin, împărțim totul în 4 fișiere:

  • index.php – partea principală a paginii, acest fișier poate fi modificat
  • menu.php – meniul site-ului web
  • header.php – antetul site-ului
  • footer.php – subsolul site-ului

Pe lângă pagina principală (index.php), de exemplu, putem avea și pagini cu o varietate de produse (category.php) și pagini ale produselor în sine (product.php). În aceste pagini, includem manual fișierele menu.php, header.php, footer.php. Problema acestei abordări este că atunci când adăugăm un nou element de meniu, adăugăm totul o dată (în meniu.php), și nu de 3 ori (în index.php, produs.php, categorie.php).

Ei bine, mâncarea este de vină: „Cum să obțineți un fișier înainte de PHP?”. În aceste scopuri, PHP are 2 instrucțiuni:

Și marșurile lor:

Îți întorc respectul celor care includ și solicită - acestea nu sunt funcții, sunt așa-zise construcții, care nu necesită arme.

De ce există o diferență între include și require?

includeі cere– acesta este absolut același lucru, cu o singură diferență, pe care la migrare (de exemplu, dacă fișierul specificat nu știe și nu poate fi conectat) include, cum ar fi migrarea Avertizare După aceasta, site-ul va continua să funcționeze și va solicita acest lucru, după cum puteți vedea, pentru a elimina complet site-ul de pe site.

Declarația de solicitare este radicală și dură. Ce este mai bun decât vikorystuvat - cred că, din marele motiv, vă recomandăm să alegeți întotdeauna opțiunea mai strictă, așa că necesită, dar mai ales cuvântul include este mai acceptabil :)

include_once și require_once - dezactivează același lucru ca include (include un fișier), dar în acest caz, asigură-te că fișierul este inclus nu mai mult de o dată. Este deosebit de dificil să scapi de ele, deoarece există o mulțime de oameni care lucrează la proiect și trebuie să te asiguri că fișierul nu este încărcat de prea multe ori.

Uvaga:

include_o datăі cere_o dată– funcționează mai bine și folosește mai multă RAM, fără a include și a solicita. Este destul de logic și legat de asta că trebuie să-și amintească toate fișierele care au fost conectate și imediat înainte de momentul conexiunii, verifică dacă vreun fișier este deja conectat.

Permiteți-mi să ilustrez clar cum funcționează includerea fișierelor în PHP:

Când includ fișiere (de exemplu: html, txt, php, xml, etc.), scriptul PHP pentru acestea este pur și simplu inserat în locul include. Apoi includeți (și respect și cerințele, deci este același lucru) - este la fel, ați copiat următorul cod (CTRL + C) și ați lipit (CTRL + V) în fișier (de exemplu, în produs. php ) , apoi salvate și lansate ca înainte: http://your_site.net/product.php

Pentru a separa fișierele principale, precum product.php, de cele care au fost incluse anterior (menu.php, header.php, footer.php), redenumiți fișierele care sunt incluse astfel: menu.inc.php, header . inc.php , footer.inc.php. Așadar, odată ce mergem la folder, vom distinge imediat între fișierele principale și cele suplimentare.

Uvaga:

Această tehnică (adăugați inc) este destinată numai clarității vizuale și abilităților funcționale de bază. Deși este importantă și consistența vizuală, asigurați-vă că structurați și lucrați întotdeauna în același stil.

include cu sensuri inversate

Vă amintiți cuvântul cheie? Deci axa PHP este atât de sălbatică, ca revenirea în mijlocul includerii. Nu am încercat deloc asta și nici nu m-am gândit încă la asta, ca să poată lupta alții împotriva ei, altfel se poate, încercați fundul some.php:

Include some.php:

// Introduceți rândul: PHP ?>

Încă câteva fapte

  • Puteți include fișiere în orice cod PHP, inclusiv în mijloc;
  • Conexiunile (include) sunt solicitate la lansarea scriptului și nu se adaugă nimic la fișierele care sunt incluse;
  • Fișierul de conexiune se află în același rând cu fișierul include. Dacă se află în mijlocul unui fișier, atunci domeniul de aplicare este global, iar dacă se află în mijlocul unei funcții, atunci este local. Încă o dată voi sublinia că include este același lucru, dacă ați luat și ați copiat codul din fișierul din secțiunea include.

Mulțumesc tuturor pentru respect și un weekend minunat!

După promovare, extensia pentru lucrul cu MySQL (biblioteca php_mysql.dll) nu este conectată la PHP și toate celelalte funcții nu sunt disponibile. Pentru a conecta biblioteca, trebuie să faceți modificări în fișierul de configurare php.ini și să copiați biblioteci suplimentare în directorul c:/windows/system32.

1. Selectați PHP (Apache) unde se află php.ini (numai pentru Apache 2.x)

Dacă utilizați Apache versiunea 2 sau mai mare, asigurați-vă că adăugați directiva PHPIniDir în fișierul de configurare Apache (httpd.conf), care vă permite să specificați exact unde să instalați fișierul php.ini. După adăugarea directivei, reporniți Apache și reporniți astfel încât programul să pornească cu succes.

PHPIniDir „c:/php”

Notă

Vă rugăm să rețineți că atunci când scrieți o cale, sunt folosite bare oblice înainte, ceea ce nu este tipic pentru Windows, în care sunt utilizate barele oblice inverse. În dreapta este că atât Apache, cât și PHP au fost create inițial pentru a funcționa pe sisteme Unix, așa că sunt folosite în sine barele oblice directe. Pentru a elimina eventualele probleme care sunt importante de diagnosticat, este recomandat să folosiți bare oblice în fișierele de configurare Apache și PHP în format unix.

Aici este important să ne amintim că fișierul de configurare php.ini este salvat în directorul c:/php. Pentru a vă asigura că Apache cunoaște fișierul de configurare php.ini, conectați funcția phpinfo().

Afișarea informațiilor de configurare PHP

echo phpinfo();
?>

Găsiți valorile rândurilor în tabelele violet eliminate „Calea fișierului de configurare (php.ini)”. Ea este responsabilă pentru specificarea căii către fișierul php.ini, care este vikorist, inclusiv fișierul în sine. Dacă directorul nu este listat în acest rând, înseamnă că Apache nu a putut găsi fișierul php.ini.

C:/php/php.ini // Corect – php.ini găsit și vikorizat
C:/windows/ // Incorect - php.ini nu este afișat

Notă

În Apache, versiunile anterioare ale directivei PHPIniDir nu existau și, ca urmare, au existat o mulțime de erori asociate cu extinderea incorectă a fișierului php.ini. Pentru Apache versiunea 1.3, php.ini trebuie instalat în directorul de sistem Windows, de obicei: c:/Windows. Folosirea directivei PHPIniDir din Apache versiunea 2 vă permite să rezolvați radical această problemă.

După ce ați verificat că Apache folosește php.ini corect, puteți continua la editarea ulterioară pentru a conecta extensia la MySQL.

2. Ajustați directiva extensie_dir în PHP.INI

Directiva extension_dir specifică directorul în care sunt instalate bibliotecile de extensii php, inclusiv biblioteca php_mysql.dll. Odată ce ați instalat php în directorul c:/php, bibliotecile de extensii vor fi de obicei instalate în subdirectorul ext (c:/php/ext). Verificați dacă acest lucru este adevărat și setați valorile corecte ale directivei extension_dir.

Extension_dir = "c:/php/ext"

3. Activați extensiile pentru lucrul cu MySQL

Pentru aceasta, puteți găsi următoarea linie în php.ini:

;extension=php_mysql.dll

Și eliminați simbolul comentariului de pe acesta - un punct cu un punct.

Extensie=php_mysql.dll

4. Copiați biblioteca suplimentară libmysql.dll din c:/windows

Dacă conectați PHP la Apache ca modul, atunci pentru a conecta extensia MySQL trebuie să copiați biblioteca suplimentară libmysql.dll din directorul c:/php în directorul c:/windows/system32. Dacă PHP se conectează la Apache ca supliment CGI, atunci copierea bibliotecii de supliment nu este necesară.

5. Reporniți Apache

Pentru a vă asigura că toate modificările efectuate sunt corecte, reporniți Apache.

6. Verificați extensia instalată

Pentru a vă asigura că biblioteca MySQL s-a conectat cu succes la PHP, deschideți funcția phpinfo(). Uită-te la „tabelele violet” și vei descoperi că au o secțiune cu nume MySQL. Dacă o astfel de secțiune este activă, înseamnă că extensia s-a conectat cu succes.

Verificarea interacțiunii dintre PHP și MySQL

1. Verificați dacă aveți un server MySQL.

Înainte de a începe să verificați interacțiunea dintre PHP și MySQL, verificați ce server MySQL rulați. Puteți face acest lucru deschizând lista de servicii Windows: „Începe” | „Panou de control” | „Administrație” | "Servicii". Găsiți serviciul folosind numele MySQL și căutați pentru a vedea ce este acesta în stadiul de robot (a treia coloană a tabelului).

O altă modalitate de a vedea ce rulează serverul MySQL: apăsați butoanele „Crtl” + „Alt” + „Del” și în fila „Procese” găsiți procesul numit mysqld.exe. În loc de procesul mysqld.exe, pot rula următoarele procese: mysqld-nt.exe, mysqld-max-nt.exe, mysqld-debug.exe.

2. Convertiți scriptul php reînnoit

$dblocation = "127.0.0.1";
$dbname = "test" ;
$dbuser = "rădăcină";
$dbpasswd = "";

$dbcnx = mysql_connect($dblocation, $dbuser, $dbpasswd);
dacă (!$dbcnx)
{
ecou "" ;
Ieșire();
}
dacă(!

{
ecou "" ;
Ieșire();
}

dacă(!$ver)
{
ecou "

Lapte la băutură

" ;
Ieșire();
}
ecou
mysql_result($ver, 0);
?>

Dacă testul are succes, numărul versiunii MySQL va fi afișat pe ecran. În caz contrar, o descriere a recompenselor care au fost primite va fi afișată pe ecran.

Erori când sunt activate extensiile pentru lucrul cu MySQL

Iertare: Apel la funcția nedefinită

Toate beneficiile pe care le indică expresia „Apel la funcția nedefinită” este că extensia PHP nu este activată. Astfel de erori apar atunci când lucrați cu funcții MySQL, ceea ce înseamnă că biblioteca PHP pentru lucrul cu MySQL – php_mysql.dll – nu este inclusă

Exemplu de notificare despre modificări:

Eroare fatală: apel la funcția nedefinită mysql_connect()

Pentru a rezolva această problemă, mergeți în partea de jos a statisticilor.

Nu există blocuri MySQL în phpinfo()

Dacă totul este configurat corect, dacă extensia pentru lucrul cu MySQL nu se conectează și nu contactează blocul MySQL din funcția phpinfo() afișată, atunci schimbați versiunea bibliotecii libmysql.dll, instalată în c:/windows/ sistem32.

  1. Egalizați dimensiunea bibliotecii libmysql.dll, care se află în c:/windows/system32, cu dimensiunea bibliotecii cu același nume, care a fost instalată din PHP. Duhoarea apare, dar este egală.
  2. Localizați bibliotecile libmysql.dll în directorul c:/windows și în toate subdirectoarele. Ștergeți toate duplicatele cunoscute și descărcați o singură bibliotecă necesară - cea care a fost copiată din directorul c:/php.

Notă

Aceeași bibliotecă libmysql.dll este, de asemenea, furnizată cu serverul MySQL. Cu toate acestea, pentru diferite biblioteci și dacă biblioteca în sine se află în directorul c:/windows/system32 sub MySQL, PHP nu poate activa extensiile. Biblioteca libmysql.dll poate fi copiată automat în c:/windows/system32 atunci când este instalat serverul MySQL. Prezența unei biblioteci în directorul de sistem care conține o versiune veche de PHP poate deveni coruptă.

Partea curată a scriptului de verificare

Ca script pentru verificarea interacțiunii PHP cu MySQL, scriptul este adesea revizuit pe site-ul nostru, consultați lista de mai jos. Semnificația sa într-un script php similar plasat peste pagina de statistici este simbolurile @ înainte de a apela funcțiile mysql_connect() și mysql_select_db(). Aceste simboluri sunt folosite pentru a suprima restricțiile browserului. Este indicat să le folosiți pe orice site de pe Internet pentru a evita afișarea informațiilor confidențiale în browser, în caz contrar, cu scripturi bine dezvoltate, nu este nevoie să protejați informațiile afișate. Acest lucru poate face dificilă diagnosticarea problemei.

Script PHP care verifică interacțiunea dintre PHP și serverul MySQL

$dblocation = "127.0.0.1";
$dbname = "test" ;
$dbuser = "rădăcină";
$dbpasswd = "";

$dbcnx = @mysql_connect($dblocation, $dbuser, $dbpasswd);
dacă (!$dbcnx)
{
ecou "

Din păcate, serverul mySQL nu este disponibil

" ;
Ieșire();
}
dacă(!@
mysql_select_db ($dbname, $dbcnx))
{
ecou "

Ne pare rău, baza de date nu este disponibilă

"
;
Ieșire();
}
$ver = mysql_query("SELECT VERSIUNE()");
dacă(!$ver)
{
ecou "

Lapte la băutură

"
;
Ieșire();
}
ecou
mysql_result($ver, 0);
?>

Dacă rezultatul scriptului dumneavoastră este o pagină goală, înseamnă de obicei că biblioteca php_mysql.dll nu este conectată la PHP. Pentru a diagnostica mai precis problema, urmați secvența de acțiuni.

  1. Vă rugăm să vă asigurați că utilizați alte scripturi PHP în loc să utilizați baza de date MySQL.
  2. Eliminați simbolul @ înainte de clicurile mysql_connect și mysql_select, care este folosit pentru a suprima afișarea preferințelor în browser. După aceasta, browserul va afișa informații suplimentare despre daune, care vor ajuta la rezolvarea problemei.

Problemă: Nu se poate conecta la serverul MySQL pe „127.0.0.1” (10061)

Când verificați scriptul PHP de verificare, vedeți o eroare similară ca aceasta:


Nu se poate conecta la serverul MySQL pe „127.0.0.1” (10061)
în C:\www\panel\htdocs\test.php pe linia 7

Vă rugăm să rețineți că serverul MySQL nu funcționează. O diagnosticare mai precisă a acestei probleme poate fi găsită în paragraful 1 al secțiunii „Verificarea interacțiunii dintre PHP și MySQL”.

Problemă: acces refuzat utilizatorului „root”@“localhost” (folosind parola: YES)

Detectarea debutului decesului:

Avertisment: mysql_connect() :
Acces refuzat utilizatorului „root”@“localhost” (folosind parola: YES)
în C:\www\panel\htdocs\test.php pe linia 7

Rețineți că încercați să vă conectați la o bază de date MySQL cu o parolă incorectă. Verificați valorile variabilei $dbpasswd în scriptul de verificare. În scopuri promoționale, serverul MySQL este instalat cu o parolă de rădăcină goală. Dacă ați setat propria parolă de root, scrieți-o în meniul $dbpasswd al scriptului de verificare.

Indiferent dacă trebuie să vă conectați la o extensie PHP pentru muncă, puteți cere pe forumul nostru instalarea și configurarea bibliotecilor Apache, PHP și extensii.