(PHP 4, PHP 5, PHP 7)
fopen - Deschide un fișier sau o adresă URL
Descriere
Resursă fopen (șir $filename , șir $mode [, bool $use_include_path = false [, resursa $context ]])
fopen() atribuie resursa numită specificată în argumentul nume de fișier fluxului.
Lista parametrilor
Dacă numele fișierului este transmis sub forma „scheme://...”, este considerat un URL și PHP va căuta un handler de protocol (cunoscut și ca „wrapper”) pentru schema respectivă protocol, PHP va emite un avertisment pentru a vă ajuta să găsiți o problemă potențială în scriptul dvs. și apoi să continuați execuția ca și cum numele fișierului ar indica un fișier obișnuit.
Dacă PHP setează numele fișierului să trimită către un fișier local, atunci încearcă să deschidă un flux către acel fișier.
Fișierul trebuie să fie accesibil de către PHP, așa că ar trebui să vă asigurați că permisiunile fișierului permit acest lucru.
Dacă ați activat modul sigur sau open_basedir, se aplică restricții suplimentare.:
Dacă PHP determină că numele de fișier indică un protocol înregistrat și acel protocol este înregistrat ca URL de rețea, PHP verifică starea directivei allow_url_fopen. Dacă este dezactivat, PHP va emite un avertisment și apelul fopen va eșua. Comentariu O listă de protocoale acceptate este disponibilă în secțiunea Protocoale și pachete acceptate. Unele protocoale ( ambalaje folosit de wrapper http).
Pe platforma Windows, trebuie să scăpați de toate barele oblice inverse din calea fișierului sau să utilizați barele oblice înainte.
$handle = fopen("c:\\folder\\resource.txt" , "r" );
?>
Parametrul mode specifică tipul de acces pe care îl solicitați de la fir. Poate fi una dintre următoarele opțiuni:
modul | Descriere |
---|---|
"r" | Deschide fișierul numai în citire; plasează indicatorul la începutul fișierului. |
"r+" | Deschide un fișier pentru citire și scriere; plasează indicatorul la începutul fișierului. |
"w" | Deschide fișierul numai pentru scriere; plasează un indicator la începutul fișierului și trunchiază fișierul la lungimea zero. |
Dacă fișierul nu există, încearcă să-l creeze. | "w+" |
Deschide un fișier pentru citire și scriere; plasează un indicator la începutul fișierului și trunchiază fișierul la lungimea zero. | Dacă fișierul nu există, încearcă să-l creeze. |
"o" | Deschide fișierul numai pentru scriere; plasează indicatorul la sfârșitul fișierului. Dacă fișierul nu există, încearcă să-l creeze. |
"a+" | Deschide un fișier pentru citire și scriere; plasează indicatorul la sfârșitul fișierului. Dacă fișierul nu există, încearcă să-l creeze. fopen()"x" Creează și deschide doar pentru scris; plasează indicatorul la începutul fișierului. Dacă fișierul există deja, sunați se termină cu eșec, se va întoarce FALSși va da o eroare de nivel E_AVERTISMENT. Dacă fișierul nu există, va încerca să-l creeze. Acest lucru este echivalent cu specificarea steagurilor. |
O_EXCL|O_CREAT | pentru apelul de sistem intern "a+". |
deschis(2) | "x+" "w" Creează și deschide spre citit și scris; in rest are acelasi comportament ca "a+""c" Deschide fișierul doar pentru scriere. Dacă fișierul nu există, acesta este creat. Dacă fișierul există, atunci nu este trunchiat (spre deosebire de "w"), iar apelarea acestei funcții nu provoacă o eroare (cum este cazul ). Indicatorul fișierului va fi setat la începutul fișierului. Acest lucru poate fi util dacă doriți să blocați un fișier (vezi turmă() |
) înainte de schimbare, de la utilizare | poate trunchia fișierul înainte ca blocarea să fi fost obținută (dacă doriți să trunchiați fișierul, puteți utiliza funcția deschis(2). |
Dacă ați activat modul sigur sau open_basedir, se aplică restricții suplimentare.:
ftruncate() după o cerere de blocare)."c+" Deschide un fișier pentru citire și scriere; in rest are acelasi comportament ca Diferite familii de sisteme de operare au convenții diferite în ceea ce privește terminațiile de linie. Când scrieți text și doriți să introduceți o întrerupere de linie, trebuie să utilizați caracterele (sau simbolul) corecte pentru dvs sistem de operare. Utilizarea sistemelor din familia Unix \n așa cum folosesc caracterele de sfârșit de linie și sistemele Macintosh \r ca caracter de sfârșit de linie.
Dacă utilizați un caracter de sfârșit de linie greșit atunci când editați fișiere, este posibil să descoperiți că acele fișiere arată „ciudat” când le deschideți.
Windows oferă un semnalizare mod de difuzare text ( "t"), care se va traduce automat Deschide un fișier pentru citire și scriere; in rest are acelasi comportament ca V \nîn timp ce lucrați cu un fișier. Și invers - puteți folosi și"b" Și invers - puteți folosi și pentru a forța modul binar, care nu vă va converti datele. Pentru a utiliza aceste moduri, specificați "t" sau
ultima literă a parametrului mode. "t" Deoarece setarea implicită a semnalizatorului de traducere depinde de versiunea SAPI și PHP utilizată, vă recomandăm să setați în mod explicit indicatorul specificat din motive de portabilitate. Trebuie să utilizați modul dacă lucrezi cu fișier text Deschide un fișier pentru citire și scriere; in rest are acelasi comportament cași utilizarea Și invers - puteți folosi și.
pentru a marca sfârșitul unei linii în script-ul dvs. fără să vă faceți griji cu privire la lizibilitatea fișierelor dvs. în alte aplicații precum Notepad. În toate celelalte cazuri, utilizați steagul \n.
Dacă ați activat modul sigur sau open_basedir, se aplică restricții suplimentare.:
Dacă nu specificați în mod explicit indicatorul „b” atunci când lucrați cu fișiere binare, este posibil să aveți o corupție ciudată a datelor dvs., inclusiv fișiere de imagine corupte și probleme ciudate cu simboluri fopen() .
astfel încât să folosească în schimb terminațiile de linie și modul adecvatDacă ați activat modul sigur sau open_basedir, se aplică restricții suplimentare.:
Din motive de portabilitate, este recomandat să folosiți întotdeauna indicatorul „b” atunci când deschideți fișiere cu "t"În plus, din motive de portabilitate, se recomandă insistent să rescrieți codul vechi care se bazează pe Și invers - puteți folosi și.
use_include_path Al treilea parametru opțional use_include_path poate fi setat la „1” sau ADEVĂRAT
dacă doriți să căutați și un fișier în include_path .
Dacă ați activat modul sigur sau open_basedir, se aplică restricții suplimentare.: Context Suportul de context a fost adăugat în PHP 5.0.0. Pentru descriere contexte
vezi secțiunea Fluxuri.
Valori returnate Creează și deschide doar pentru scris; plasează indicatorul la începutul fișierului. Dacă fișierul există deja, sunați Returnează un pointer către fișier dacă are succes, sau
în caz de eroare.
Erori FALS Dacă fișierul nu a putut fi deschis, va fi generată o eroare de nivel
. Puteți utiliza operatorul pentru a suprima această eroare.
Lista modificărilor
Exemple fopen()
Exemplul #1 Exemple de utilizare
$handle = fopen("/home/rasmus/file.txt" , "r" );
$handle = fopen ("/home/rasmus/file.gif" , "wb" );
$handle = fopen("http://www.example.com/" , "r" ); $handle = fopen ( „ftp://utilizator:[email protected]/somefile.txt"
?>
, "w");
Note
Atenţie Când utilizați SSL, Microsoft IIS încalcă protocolul prin închiderea conexiunii fără a trimite un indicator. PHP va raporta acest lucru ca „SSL: Fatal Protocol Error” în momentul în care ajungeți la sfârșitul datelor. Pentru a ocoli acest lucru, ar trebui să setați error_reporting la un nivel care exclude E_WARNING. Versiunile PHP 4.3.7 și mai vechi pot detecta că există un IIS problematic pe partea serverului la deschiderea unui flux folosind un wrapper https://și nu afișează un avertisment. Dacă utilizați fsockopen() a crea ssl:// priza, este responsabilitatea dumneavoastră să detectați și să suprimați acest avertisment.
Dacă ați activat modul sigur sau open_basedir, se aplică restricții suplimentare.: Când opțiunea mod sigur este activată, PHP verifică dacă directorul cu care sunteți pe cale să lucrați are același UID (proprietar) ca și scriptul care se execută.
Dacă ați activat modul sigur sau open_basedir, se aplică restricții suplimentare.:
Dacă întâmpinați probleme în timp ce citiți sau scrieți fișiere și utilizați PHP ca modul de server, asigurați-vă că procesul serverului are acces la fișierele și directoarele pe care le utilizați.
Dacă ați activat modul sigur sau open_basedir, se aplică restricții suplimentare.:
Această funcție poate avea succes și dacă numele fișierului este un director. Dacă nu sunteți sigur dacă numele fișierului este un fișier sau un director, atunci trebuie să utilizați funcția is_dir() fopen() .
, înainte de apel
- Locația fișierului php.ini depinde de sistemul de operare pe care rulează serverul furnizorului de găzduire. Pentru a afla unde se află, urmează 4 pași simpli:
- Creați un fișier php (numele poate fi orice, dar luăm myphpinfo.php ca exemplu) și adăugați următoarele rânduri la el:
- Încărcați acest fișier pe serverul pe care se află site-ul dvs. (în folderul rădăcină).
- Lansăm prin browser (introduceți adresa URL https://yoursitename.com/myphpinfo.php).
În fereastra care apare, căutați calea către php.ini (priviți mai întâi la „Fișier de configurare încărcat”, dacă scrie „Niciuna”, apoi uitați-vă la „Calea fișierului de configurare (php.ini)”).
Cum se configurează php.ini? Fișierul php.ini are următoarele reguli de sintaxă „directive = value”. Dacă doriți să adăugați comentarii (de exemplu, în care indicați ce afectează această setare
), apoi faceți-o după punct și virgulă (tot ce vine după acest semn nu este socotit ca o comandă). Iată un exemplu:
max_execution_time = 40 ; Numărul maxim de secunde pentru execuția scriptului
Setări generalePHPengine = Pornit; Scripturile PHP sunt activate.. Если будет значение Off, то PHP-код обрамлять в традиционные
Short_open_tag = Activat ; Permite încadrarea simplificată a codului PHP cu etichete<% %>
Asp_tags = Activat ; Permite posibilitatea de a evidenția codul PHP, așa cum se face în ASP -
Precizie = 12 ; Specifică câte cifre vor fi după virgulă zecimală pentru numerele cu virgulă mobilă.
Ieșire_buffering = 4096 ; Bufferingul de ieșire va fi activat automat, cu dimensiunea tamponului specificată după „egal”.
Safe_mode_allowed_env_vars = PHP_ ; Permite utilizatorului să lucreze numai cu variabile de mediu care încep cu PHP_. Dacă această directivă este goală (nu va avea nicio valoare), atunci utilizatorii vor putea modifica orice variabilă de mediu. Acest lucru poate fi foarte dăunător pentru securitatea scriptului.
Safe_mode_protected_env_vars = LD_LIBRARY_PATH ; Interzice modificarea variabilelor care sunt enumerate separate prin virgule.
Disable_functions = ; După semnul egal, trebuie să notați funcțiile pe care doriți să le dezactivați, separate prin virgule (de obicei, acest lucru se face pentru securitate)
Disable_classes = ; După semnul „egal”, trebuie să scrieți, separate prin virgule, clasele ale căror apeluri doriți să le interziceți (de obicei, acest lucru se face pentru securitate)
Limitarea resurselor
max_execution_time = 40 ; Timp maxim pentru execuția scriptului (în secunde)Timp_intrare_maxim = 40 ; Timpul maxim în secunde în care script-ul este acordat pentru a procesa datele care sunt încărcate.
Memory_limit = 16M ; Memoria maximă alocată pentru un script
Gestionarea erorilor și jurnalele
error_reporting = E_ALL | E_EROARE | E_AVERTISMENT | E_PARSE | E_CORE_ERROR | E_CORE_AVERTISMENT | E_COMPILE_ERROR | E_COMPILE_WARNING | E_USER_ERROR | E_USER_WARNING | E_USER_NOTICE ; Specifică o listă de erori care pot fi afișate.Display_errors = Activat; Permite afișarea erorilor direct în browser (utilizat adesea pentru ușurința depanării).
Display_startup_errors = Activat ; Erorile care apar în timpul pornirii PHP pot fi afișate.
Log_errors = Activat ; Erorile pot fi scrise într-un fișier jurnal.
Log_errors_max_len = 1024 ; Numărul maxim de caractere care poate fi lungimea jurnalului.
Track_errors = Activat ; Cele mai recente mesaje de eroare vor fi stocate în variabila $php_errormsg
Html_errors = Activat ; Permiteți afișarea mesajelor de eroare în HTML.
Error_log = nume de fișier ; Setează numele jurnalului de erori.
Prelucrarea datelor
variabile_ordine = "EGPCS" ; Setează ordinea în care PHP va înregistra variabilele (E - variabile încorporate, G - variabile GET, P - variabile POST, C - Cookies, S - sesiuni). Dacă eliminați oricare dintre litere, funcționarea variabilelor corespunzătoare va fi blocată.Register_globals = Activat ; Permite abilitatea de a trata variabilele care vin prin GET/POST/Cookie/session ca variabile normale (de exemplu, „$variablename”).
Register_argc_argv = Activat ; Este permisă crearea variabilelor $argv și $argc pe baza informațiilor din metoda GET.
Post_max_size = 8M ; Setează cantitatea maximă de date care poate fi primită.
Magic_quotes_gpc = Activat ; Permite procesarea automată a ofertelor primite prin POST/GET/Cookie.
Auto_prepend_file = ; Conținutul fișierelor specificate în aceste directive trebuie să fie procesat corespunzător de PHP ÎNAINTE de a executa scriptul
auto_append_file = ; Conținutul fișierelor specificate în aceste directive trebuie să fie procesat corespunzător de PHP DUPĂ ce scriptul a fost executat.Default_mimetype = "text/html" ; Setează codificarea pentru tipul de conținut. În mod implicit text/html va fi folosit fără a specifica codificarea
Doc_root = ; Setează folderul rădăcină pentru scripturile PHP.
Extension_dir = "./" ; Specifică folderul în care vor fi stocate extensiile încărcate dinamic.
Încărcarea fișierelor
file_uploads = Activat ; Încărcarea fișierelor pe server este permisă.Upload_tmp_dir = ; Director temporar pentru fișierele de descărcat.
Upload_max_filesize = 2M; Setează dimensiunea maximă a fișierului care poate fi încărcat.
Lucrul cu prize
user_agent="PHP"; Variabila USER_AGENT este setată atunci când are loc o conexiune la socket.Default_socket_timeout = 30 ; Timp maxim de ascultare pe o priză (secunde).
Sesiuni
session.save_handler = fișiere; Specifică faptul că informațiile despre sesiune ar trebui să fie stocate în fișieresession.save_path = /tmp ; După semnul egal, trebuie să specificați calea către folderul în care vor fi stocate informațiile despre sesiuni (este important ca folderul să existe deja)
session.use_cookies = 1 ; Permite utilizarea cookie-urilor în sesiuni
session.name = PHPSESSID ; Indică utilizarea ID-ului sesiunii ca nume de sesiune și cookie de sesiune
session.cookie_lifetime = 0; Durata de viață a sesiunii („0” înseamnă că sesiunea este valabilă până când fereastra browserului este închisă)
session.use_trans_sid = 1 ; Dacă utilizatorul a dezactivat cookie-urile, ID-ul sesiunii va fi adăugat la toate linkurile
Extensii dinamice
extensie=modulename.extension ; Poate fi folosit pentru a încărca module externe. Pentru sistemele Windows, de obicei scriu extension=msql.dll și pentru
UNIX - extensie=msql.so
Lucrul cu module MySQL
mysql.allow_persistent = Activat; Permite conexiuni MySQL stabile.Mysql.max_persistent = -1 ; Setează numărul maxim de conexiuni MySQL stabile. Dacă specificați -1, aceasta va însemna că nu există restricții.
Mysql.max_links = -1 ; Setează numărul maxim de conexiuni MySQL stabile și conexiuni ODBC instabile. Dacă specificați -1, aceasta va însemna că nu există restricții.
Mysql.default_port = ; Port pentru funcția mysql_connect.
Mysql.default_socket = ; Numele socket-ului pentru conexiunile locale MySQL.
Mysql.default_host = ; Nume de gazdă pentru funcția mysql_connect.
Mysql.default_user = ; Nume de utilizator.
Mysql.default_password = ; Parolă.
Dacă ați creat propriul fișier php.ini și l-ați plasat în folderul site-ului
În acest caz, din motive de securitate, trebuie să blocați accesul la acesta pentru toată lumea, cu excepția dvs. Pentru a face acest lucru, trebuie să scrieți următorul cod în fișierul .htaccess:
comanda permite, refuza
nega de la toti
Dar ai grijă, pentru că... Cu aceste setări, toate directivele (php_value, php_flag etc.) referitoare la setările php prin fișierul .htaccess vor înceta să funcționeze (va fi afișată o eroare internă de server 500).
Important! Dacă vă creați propriul fișier php.ini, acesta va afecta doar directorul în care se află.
resursă fopen(nume fișier șir, mod șir [, bool use_include_path [, resursa zcontext]])fopen() atribuie resursa numită specificată în argumentul nume de fișier fluxului. Dacă numele fișierului este transmis sub forma „scheme://...”, este considerat un URL și PHP va căuta un handler de protocol (cunoscut și ca „wrapper”) pentru schema respectivă protocol, PHP va emite o notă pentru a vă ajuta să găsiți o problemă potențială în scriptul dvs. și va continua execuția ca și cum numele fișierului ar indica un fișier obișnuit.
Dacă PHP decide că numele de fișier indică un fișier local, atunci va încerca să deschidă un flux către acel fișier. Fișierul trebuie să fie accesibil de către PHP, așa că ar trebui să vă asigurați că permisiunile fișierului permit acest lucru. Dacă aveți modul Safe Mode sau open_basedir activat, se aplică restricții suplimentare.
Dacă PHP a decis că numele fișierului indică un protocol înregistrat și acel protocol este înregistrat ca URL de rețea, PHP va verifica starea directivei allow_url_fopen. Dacă este dezactivat, PHP va emite un avertisment și apelul fopen va eșua.
Comentariu: Unele protocoale acceptă context și/sau opțiuni php.ini. Consultați pagina de protocol corespunzătoare pentru o listă de opțiuni care pot fi setate. (de exemplu, valoarea php.ini user_agent este folosită de wrapper-ul http). Pentru o descriere a contextelor și a parametrilor zcontext, consultați secțiunea Funcții de flux.
Comentariu: Suportul de context a fost adăugat în PHP 5.0.0.
Comentariu:Începând cu PHP 4.3.2, modul binar este modul implicit pentru toate platformele care fac diferența între modurile binar și text. Dacă întâmpinați probleme după actualizare, încercați să utilizați indicatorul „t” ca o soluție până când vă schimbați scripturile pentru a obține o portabilitate mai mare, așa cum s-a menționat mai sus.
Parametrul mode specifică tipul de acces pe care îl solicitați de la fir. Poate fi unul dintre următoarele:
Dacă fișierul nu a putut fi deschis, funcția va reveni FALSși va genera o eroare de nivel E_AVERTISMENT. Puteți folosi acest lucru pentru a suprima acest avertisment.
Exemplul 1. Exemple de utilizare a funcției fopen()
|
Dacă întâmpinați probleme în timp ce citiți sau scrieți fișiere și utilizați PHP ca modul de server, asigurați-vă că procesul serverului are acces la fișierele și directoarele pe care le utilizați.
16,5KDe fapt, cum să deschideți un fișier php nu este o problemă mare. Poate fi mai greu să deschizi o sticlă de bere când te afli în mijlocul unei păduri. Dar doar programatorii pasionați gândesc așa. Și pentru începători, vă vom spune despre toate capabilitățile PHP pentru lucrul cu fișiere:
fișiere php
Fișierele cu extensia php conțin cod scris în limbajul de programare cu același nume. Spre deosebire de alte limbi, php este un limbaj de programare pe partea de server. Adică rulează pe partea de server. Prin urmare, pentru a-și depana codul, trebuie instalat un server local pe mașina client.
Pentru a lucra cu fișiere php, se folosesc aplicații speciale - editori de software. Cele mai frecvente sunt:
- Dreamweaver.
- PHPEdit.
- Dezvoltare PHP Eclipse.
include numele fișierului
Exemplu de conexiune:
Fișier inclus:
Includerea unui fișier este posibilă și folosind constructul require. Spre deosebire de include, acesta include fișierul înainte ca codul programului să fie executat. Folosind require în cod, este posibil un singur apel la acest fișier. Când este accesat din nou, sistemul va afișa un mesaj de eroare global și va opri execuția programului.
Construcția include include doar sursa în timpul execuției programului. Suporta citirea multiplă a fișierului php. Dacă apare o eroare, va fi afișat doar un mesaj de avertizare, iar execuția codului va continua de la următoarea linie.
Deschiderea și închiderea fișierelor
În php, toate operațiunile cu fișiere sunt efectuate în mai multe etape:
- Deschiderea unui fișier;
- Editarea continutului;
- Închiderea dosarului.
Funcția fopen() este folosită pentru a deschide un fișier. Sintaxa sa este:
int fopen(nume fișier șir, mod șir [, int use_include_path])
Argumente acceptate:
- șir nume fișier – numele fișierului sau calea absolută către acesta. Dacă calea către fișier nu este specificată, acesta va fi căutat în directorul curent. Dacă fișierul pe care îl căutați lipsește, sistemul va afișa un mesaj de eroare. Exemplu:
- modul șir – indică modul de deschidere a fișierului. Valori acceptate de argument:
- r – fișierul este deschis doar pentru citire, indicatorul fișierului este setat la început;
- r+ – fișierul este deschis pentru citire și scriere;
- w – creează un fișier nou doar pentru scriere. Dacă un fișier cu același nume există deja, toate datele din acesta sunt șterse automat;
- w+ - creează un fișier nou pentru scriere și citire. Când un astfel de fișier există, datele sale sunt complet suprascrise cu altele noi;
- a – fișierul este deschis pentru scriere. Indicatorul este setat la sfârșit. Adică, scrierea în fișierul php va începe nu de la început, ci de la sfârșit;
- a+ – deschideți un fișier în modul citire-scriere. Înregistrarea va începe de la sfârșit;
- b – modul de lucru cu un fișier care conține date binare (în sistemul de numere binar). Acest mod este disponibil numai pe sistemul de operare Windows.
Pentru a închide accesul la un fișier, utilizați funcția fclose(). Sintaxă:
int fclose (fișier int), unde fișierul int este un handle al site-ului care urmează să fie închis.
După fiecare citire sau scriere, fișierul trebuie închis cu această funcție. În caz contrar, fluxul creat pentru fișier rămâne deschis. Și acest lucru duce la un consum inutil al capacității serverului.
Exemplu:
Citirea și scrierea fișierelor
Pentru a afișa pur și simplu întregul conținut al unui fișier, funcția readfile() este ideală. Sintaxa sa este:
readfile (șir nume fișier), unde șir nume fișier este numele fișierului șir (nu un handle).
Același fișier poate fi citit folosind funcția fpassthru(). Citește datele de la poziția indicatorului final până la sfârșitul fișierului. Sintaxa sa este:
int fpassthru (fișier int)
Funcția necesită deschiderea și închiderea unui fișier. Exemplu:
Rezultatul este similar cu cel precedent.
Funcțiile pentru lucrul cu fișiere în php vă permit să citiți conținutul rând cu linie și caracter cu caracter:
- șir fgets (fișier int, lungime int)– funcția citește un șir de lungime . Exemplu:
- string fread (fișier int, lungime int)– acțiunea este identică cu cea anterioară.
Pentru a scrie date text într-un fișier, există două funcții identice:
- int fputs (fișier int, șir de caractere [, lungime int ])
- int fwrite(fișier int, șir șir [, lungime int ])
Funcțiile scriu într-un fișier int fișier un șir de caractere cu lungimea specificată int lungime ( argument opțional). Exemplu:
Crearea și ștergerea fișierelor
Pentru a crea un fișier php, puteți utiliza funcția fopen() în modul de acces „w” sau „w+”. Sau funcția touch(). Setează ora de modificare a fișierului. Dacă nu există niciun element cu numele căutat, acesta va fi creat. Sintaxa sa.