gethostbynamel
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ IP-Π°Π΄ΡΠ΅ΡΠΎΠ² Ρ ΠΎΡΡΠ°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
array gethostbynamel(string hostname);
ΠΠ΄Π½ΠΎΠΌΡ Π΄ΠΎΠΌΠ΅Π½Π½ΠΎΠΌΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ IP-Π°Π΄ΡΠ΅ΡΠΎΠ², ΠΈ Π² ΡΠ»ΡΡΠ°Π΅ ΡΠΈΠ»ΡΠ½ΠΎΠΉ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² DNS-ΡΠ΅ΡΠ²Π΅Ρ ΡΠ°ΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ, ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΌΡ IP-Π°Π΄ΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²ΠΈΡΡ Π·Π°ΠΏΡΠΎΡ. ΠΠ½ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ ΡΠΎΡ Π°Π΄ΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ΅Π΄ΠΊΠΎ.
Π€ΡΠ½ΠΊΡΠΈΡ gethostbynamel() Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½Π΅ ΠΎΠ΄ΠΈΠ½, Π° Π²ΡΠ΅ IP-Π°Π΄ΡΠ΅ΡΠ° Ρ ΠΎΡΡΠ° Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ hostname.
Π‘ΡΠΎΠΈΡ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ Π² ΠΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Ρ ΠΎΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄ΠΎΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ IP-Π°Π΄ΡΠ΅ΡΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π΅ΡΠ»ΠΈ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ Π΄Π»Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Ρ ΠΎΡΡΠ° Ρ IP-Π°Π΄ΡΠ΅ΡΠΎΠΌ ip Π²ΡΠ΅Π³Π΄Π° ΠΏΠ΅ΡΠ°ΡΠ°Π΅Ρ ΡΡΠΎΡ ΠΆΠ΅ Π°Π΄ΡΠ΅Ρ:
$host = gethostbyaddr($ip);
echo gethostbyname($host);
ΡΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ Π΄ΠΎΠΌΠ΅Π½Π° Ρ DNS-ΠΈΠΌΠ΅Π½Π΅ΠΌ $host, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΌΠΎΠΆΠ΅Ρ Π½Π°ΠΏΠ΅ΡΠ°ΡΠ°ΡΡ Π½Π΅ ΡΠΎ ΠΆΠ΅ ΠΈΠΌΡ, Π° Π΄ΡΡΠ³ΠΎΠ΅:
$ip = gethostbyname($host);
echo gethostbyaddr($ip);
getprotobyname
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠ°, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
int getprotobyname(string name);
getprotobynumber
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΏΠΎΡΡΠ°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
string getprotobynumber(int number);
getservbyname
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ»ΡΠΆΠ±Ρ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
int getservbyname(string service, string protocol);
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠ»ΡΠΆΠ±Π° service.
Π Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ protocol ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠΈΠΏ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° - TCP ΠΈΠ»ΠΈ UDP.
echo getservbyname("HTTP", "TCP"); // ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ²Π΅ΡΡΠΈ 80
getservbyport
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-ΡΠ»ΡΠΆΠ±Ρ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΏΠΎΡΡ.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
string getservbyport(int port, string protocol);
ΠΠ΄Π΅ΡΡ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ protocol Π½ΡΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΏ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° - TCP Π»ΠΈΠ±ΠΎ UDP.
echo getservbyport(21, "TCP"); // Π²ΡΠ²Π΅Π΄Π΅Ρ: ftp
echo getservbyport(23, "TCP"); // Π²ΡΠ²Π΅Π΄Π΅Ρ: telnet
checkdnsrr
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΡ Π·Π°ΠΏΠΈΡΠΈ DNS.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
int checkdnsrr(string host [, string type]);
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π·Π°ΠΏΡΠΎΡ DNS-ΡΠ΅ΡΠ²Π΅ΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠΌΠ΅ΡΡΡΡ Π΄Π»Ρ Ρ ΠΎΡΡΠ° host. ΠΡΠ»ΠΈ Π±ΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π·Π°ΠΏΠΈΡΠΈ ΡΠΈΠΏΠ° type, ΡΠΎ ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈ ΠΏΡΠΈ ΠΎΡΠΈΠ±ΠΊΠ΅ - false.
ΠΡΠ³ΡΠΌΠ΅Π½Ρ typeΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
ΠΡΠ³ΡΠΌΠ΅Π½Ρ host ΠΌΠΎΠΆΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ ΡΡΡΠΎΠΊΠΎΠΉ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ IP Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠΎΡΠΊΠ°ΠΌΠΈ, Π»ΠΈΠ±ΠΎ Π±ΡΡΡ ΠΈΠΌΠ΅Π½Π΅ΠΌ Ρ ΠΎΡΡΠ°.
getmxrr
ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ MX Π·Π°ΠΏΠΈΡΠΈ Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ½Π΅Ρ-Ρ ΠΎΡΡΠ°.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
int getmxrr(string hostname, array mxhosts [, array weight]);
Π€ΡΠ½ΠΊΡΠΈΡ getmxrr() ΠΈΠ½ΠΈΡΠΈΠΈΡΡΠ΅Ρ ΠΏΠΎΠΈΡΠΊ Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ DNS Π·Π°ΠΏΠΈΡΠΈ MX (ΠΏΠΎΡΡΠΎΠ²ΡΠΉ ΡΠ΅ΡΠ²Π΅Ρ Π΄ΠΎΠΌΠ΅Π½Π°) Π΄Π»Ρ Ρ ΠΎΡΡΠ° hostname.
ΠΡΠ»ΠΈ Π·Π°ΠΏΠΈΡΡ Π½Π°ΠΉΠ΄Π΅Π½Π°, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ true, Π΅ΡΠ»ΠΈ Π½Π΅Ρ - ΡΠΎ false.
Π‘ΠΏΠΈΡΠΎΠΊ Π·Π°ΠΏΠΈΡΠ΅ΠΉ MX Π·Π°Π½ΠΎΡΠΈΡΡΡ Π² ΠΌΠ°ΡΡΠΈΠ² mxhosts. ΠΡΠ»ΠΈ ΡΠΊΠ°Π·Π°Π½ ΠΌΠ°ΡΡΠΈΠ² weight, ΠΎΠ½ Π·Π°ΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΎ Π·Π°ΠΏΠΈΡΡΡ .
Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΡΠΈΠ±ΠΎΠΊ
PHP ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ:
Π£ΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ΅Π» ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎΡΠΌΠΈΡΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡ Π² Ρ ΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡ. ΠΠ»Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ php.ini ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ "|", "~", "!" ΠΈ "&".
Π PHP 4 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π° E_ALL & ~E_NOTICE, ΡΠΎ Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ error_reporting() (Π΅Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° Apache).
ΠΡΠ»ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» "@", ΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΌ Π²ΡΠ΄Π°Π²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π΄Π°ΠΆΠ΅ Π²ΡΠ΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄ΠΎΡΡΠΎΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ.
ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ track_errors, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $php_errormsg.
<?php
// ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ
function userErrorHandler($errno,$errmsg,$filename,$linenum,$vars) {
// Π²ΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ
$dt=date("Y-m-d H:i:s (T)");
$errortype = array(
1 => "Error",
2 => "Warning",
4 => "Parsing Error",
8 => "Notice",
16 => "Core Error",
32 => "Core Warning",
64 => "Compile Error",
128 => "Compile Warning",
256 => "User Error",
512 => "User Warning",
1024 => "User Notice"
);
$err.="Π²ΡΠ΅ΠΌΡ ($dt), Π½ΠΎΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ($errno), ";
$err.="ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ (".$errortype[$errno]."): ";
$err.=""$errmsg".ΡΠ°ΠΉΠ» "$filename", ΡΡΡΠΎΠΊΠ° (";
$err.=$linenum.")n";
$user_errors=array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
if(in_array($errno, $user_errors))
// Π²ΡΠ΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
echo $err;
// ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΆΡΡΠ½Π°Π»Π΅
error_log($err, 3, "/usr/local/php4/error.log");
}
// ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
error_reporting(0); // Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ PHP
$old_error_handler=set_error_handler("userErrorHAndler");
// Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
$t=_NOT_DEFINED_CONSTANT;
trigger_error("ΠΠΎΡ ΠΎΡΠΈΠ±ΠΊΠ°", E_USER_ERROR);
trigger_error("ΠΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅", E_USER_WARNING);
?>
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
PHP ΠΈΠΌΠ΅Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠΈΠΏΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ:
Π£ΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π² Π²ΠΈΠ΄Π΅ ΡΠΈΡΠ΅Π» ΠΈΠ»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°ΡΡ, ΡΠΎΡΠΌΠΈΡΡΡ Π±ΠΈΡΠΎΠ²ΡΡ ΠΌΠ°ΡΠΊΡ ΠΎΡΠΈΠ±ΠΎΠΊ, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΠ±ΡΠ°ΡΡ Π² Ρ ΠΎΠ΄Π΅ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΡΠ΅Π½Π°ΡΠΈΡ. ΠΠ»Ρ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π±ΠΈΡΠΎΠ²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ, Π½ΠΎ Π² ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ ΡΠ°ΠΉΠ»Π΅ php.ini ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ "|", "~", "!" ΠΈ "&".
Π PHP 4 ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²ΠΈΠ΄Π° E_ALL & ~E_NOTICE, ΡΠΎ Π΅ΡΡΡ ΡΠΎΠΎΠ±ΡΠ°ΡΡΡΡ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ ΠΎΠ±ΡΡΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΡΡΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΠ°ΠΉΠ»Π° ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ error_reporting() (Π΅Π΅ ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π² ΡΠ°ΠΉΠ»Π°Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ° Apache).
ΠΡΠ»ΠΈ ΠΏΡΠΈ Π²ΡΠ·ΠΎΠ²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π΅Π΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ» "@", ΡΠΎ Π² ΡΠ»ΡΡΠ°Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π½Π΅ΠΌ Π²ΡΠ΄Π°Π²Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ ΠΈΠ³Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π±Π»ΠΎΠΊΠΈΡΡΠ΅Ρ Π΄Π°ΠΆΠ΅ Π²ΡΠ΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΎ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΎΡΠΈΠ±ΠΊΠ°Ρ , ΠΏΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ Π΄ΠΎΡΡΠΎΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅ΡΡΡ.
ΠΡΠ»ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ track_errors, ΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΡΡΡ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ $php_errormsg.
<?php
// ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΠΎΡΠΈΠ±ΠΎΠΊ
function userErrorHandler($errno,$errmsg,$filename,$linenum,$vars) {
// Π²ΡΠ΅ΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΊΠΈ
$dt=date("Y-m-d H:i:s (T)");
$errortype = array(
1 => "Error",
2 => "Warning",
4 => "Parsing Error",
8 => "Notice",
16 => "Core Error",
32 => "Core Warning",
64 => "Compile Error",
128 => "Compile Warning",
256 => "User Error",
512 => "User Warning",
1024 => "User Notice"
);
$err.="Π²ΡΠ΅ΠΌΡ ($dt), Π½ΠΎΠΌΠ΅Ρ ΠΎΡΠΈΠ±ΠΊΠΈ ($errno), ";
$err.="ΡΠΈΠΏ ΠΎΡΠΈΠ±ΠΊΠΈ (".$errortype[$errno]."): ";
$err.=""$errmsg".ΡΠ°ΠΉΠ» "$filename", ΡΡΡΠΎΠΊΠ° (";
$err.=$linenum.")n";
$user_errors=array(E_USER_ERROR, E_USER_WARNING, E_USER_NOTICE);
if(in_array($errno, $user_errors))
// Π²ΡΠ΄Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
echo $err;
// ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΠΆΡΡΠ½Π°Π»Π΅
error_log($err, 3, "/usr/local/php4/error.log");
}
// ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΠΎΡΠΈΠ±ΠΎΠΊ ΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ
error_reporting(0); // Π½Π΅ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ PHP
$old_error_handler=set_error_handler("userErrorHAndler");
// Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅
$t=_NOT_DEFINED_CONSTANT;
trigger_error("ΠΠΎΡ ΠΎΡΠΈΠ±ΠΊΠ°", E_USER_ERROR);
trigger_error("ΠΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅", E_USER_WARNING);
?>
Π€ΡΠ½ΠΊΡΠΈΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΡΠΈΠ±ΠΎΠΊ
error_log
ΠΠΎΡΡΠ»ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅.
Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
int error_log(string message, int message_type [, string destination [, string extra_headers]])
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅, ΠΏΠΎΡΡΠ»Π°Π΅ΠΌΠΎΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΠΆΡΡΠ½Π°Π» ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ web-ΡΠ΅ΡΠ²Π΅ΡΠ°, ΠΏΡΠΎΡ TCP ΠΈΠ»ΠΈ Π² ΡΠ°ΠΉΠ».
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ message ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ°ΠΌΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π½ΠΈΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΎ Π²ΡΠΎΡΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ message_type - ΠΊΡΠ΄Π° ΠΎΠ½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΎ.
ΠΠ°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ:
if(!Ora_London($username, $password)) {
error_log("Π‘Π΅ΡΠ²Π΅Ρ Oracle Π½Π΅Π΄ΠΎΡΡΡΠΏΠ΅Π½!", 0);
};
if(!($foo = allocate_new_foo()) {
error_log("ΠΠ΅Π»ΡΠ·Ρ Π²ΡΠ΄Π΅Π»ΠΈΡΡ FOO!", 1, " [email protected]");
}
// other ways of calling error_log():
error_log("Π£ Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°!", 2, "127.0.0.1:7000");
error_log("Π£ Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°!", 2, "localhost");
error_log("Π£ Π½Π°Ρ ΠΎΡΠΈΠ±ΠΊΠ°!", 3, "/var/tmp/my-errors.log");
error_reporting