PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

basename> <filepro
Last updated: Sun, 25 Nov 2007

view this page in

Súborový systém a jeho funkcie

Úvod

Požiadavky

Žiadne externé knižnice nie sú potrebné na vybudovanie tohto rozšírenia.

Inštalácia

Nie je potrebná žiadna inštalácia na použitie týchto funkcií; sú časťou jadra PHP.

Runtime Konfigurácia

Správanie tejto funkcie je ovplyvnené nastaveniami v php.ini.

Konfiguračné možnosti súborového systému a prúdov
Názov Implicitne Meniteľnosť
allow_url_fopen "1" PHP_INI_ALL
user_agent NULL PHP_INI_ALL
default_socket_timeout "60" PHP_INI_ALL
from NULL ??
auto_detect_line_endings "Off" PHP_INI_ALL

Nasleduje krátke vysvetlenie konfiguračných direktív.

allow_url_fopen boolean

Táto možnosť povoľuje využívať rozšírené mechanizmy typu wrapper pre fopen tak, aby bolo možné pristupovať k objektom URL rovnakým spôsobom ako k súborom. Implicitne sú tieto wrapper mechanizmy k dispozícii na prístup k vzdialeným súborom použitím protokolov ftp alebo http. Niektoré rozšírenia ako napr. zlib môžu poskytovať ďalšie mechanizmy typu wrapper.

Note: Táto možnosť bola daná k dispozícii ihneď po vydaní verzie 4.0.3. Pri verziách do 4.0.3 (vrátane) mohla byť táto možnosť zakázaná iba pri kompilácii - pomocou prepínača --disable-url-fopen-wrapper .

Warning

Vo verziách pre systém Windows starších ako PHP 4.3 nepodporujú prístup k vzdialeným súborom nasledovné funkcie: include(), include_once(), require(), require_once() a funkcie imagecreatefromXXX v rozšírení Image.

user_agent string

Definuje hodnotu pre položku user agent, ktorú bude PHP odosielať.

default_socket_timeout integer

Implicitná premlka (v sekundách) pri prúdoch založených na socketoch.

Note: Táto konfiguračná možnosť bola zavedená v PHP 4.3.

from="joe@example.com" string

Definuje heslo pre anonymný prístup cez ftp (vaša emailová adresa).

auto_detect_line_endings boolean

Ak je táto možnosť zapnutá, PHP bude skúmať, či dáta načítavané pomocou funkcií fgets() a file() používajú konce riadkov ako Unix, MS-Dos alebo Macintosh.

Týmto zabezpečíte to, že PHP bude správne pracovať so systémami Macintosh. Implicitná hodnota je ale Off (vypnuté) pretože pri detekcii druhu konca prvého riadku nastáva isté malé výkonnostné spomalenie. Ďalším dôvodom je to, že ľudia používajúci znak carriage-return ako oddeľovač riadkov v systémoch UNIX sa môžu stretnúť so spätne nekompatibilným správaním.

Note: Táto konfiguračná možnosť bola zavedená v PHP 4.3.

Typy zdrojov

Preddefinované Konštanty

Toto rozšírenie nemá definované žiadne konštanty.

Tiež pozri

Príbuzné funkcie mo¾no nájs» v sekciách Práca s adresárom a Spús»anie programov.

Zoznam a vysvetlenie rozlièným mechanizmov wrappers podporujúcich adresy URL a mô¾u by» pou¾ité pri práci so vzdialenými adresármi nájdete v èasti Zoznam Podporovaných Protokolov/Balíčkov.

Table of Contents

  • basename — Vráti z reťazca obsahujúceho cestu k súboru jeho názov
  • chgrp — Zmení skupinu súboru
  • chmod — Zmení mód súboru
  • chown — Zmení vlastníka súboru
  • clearstatcache — Vymaže cache obsahujúcu stav súborov
  • copy — Skopíruje súbor
  • delete — Pozri unlink alebo unset
  • dirname — Vráti z reťazca obsahujúceho cestu k súboru časť obsahujúcu názov adresára.
  • disk_free_space — Vráti dostupné miesto v adresári
  • disk_total_space — Vráti celkovú veľkosť adresára
  • diskfreespace — Alias pre disk_free_space
  • fclose — Zatvorí súbor daný jeho deskriptorom.
  • feof — Testuje koniec súboru pre deskriptor súboru.
  • fflush — Zapíše obsah výstupu vo vyrovnávacej pamäte do súboru
  • fgetc — Načíta znak so súboru zadaného deskriptorom
  • fgetcsv — Načíta riadok zo súboru zadaného deskriptorom a separuje polia CSV.
  • fgets — Načíta riadok zo súboru zadaného deskriptorom
  • fgetss — Načíta riadok zo súboru zadaného deskriptorom a odstráni tagy HTML
  • file_exists — Zistí, či zadaný súbor existuje
  • file_get_contents — Načíta celý súbor do reťazca
  • file_put_contents — Write a string to a file
  • file — Načíta obsah súboru do poľa
  • fileatime — Zistí čas posledného prístupu k súboru
  • filectime — Zistí čas poslednej zmeny súboru
  • filegroup — Zistí skupinu vlastníka súboru
  • fileinode — Zistí číslo inode-u súboru
  • filemtime — Zistí dátum poslednej úpravy súboru
  • fileowner — Zistí vlastníka súboru
  • fileperms — Zistí práva k danému súboru
  • filesize — Zistí veľkosť súboru
  • filetype — Zistí typ súboru
  • flock — Uzamkýna súbory metódou "portable advisory locking"
  • fnmatch — Zistí, či názov súboru zodpovedá danému výrazu
  • fopen — Otvorí súbor či adresu URL
  • fpassthru — Zapíše všetky zostávajúce dáta od pozície ukazovateľa súboru
  • fputcsv — Format line as CSV and write to file pointer
  • fputs — Zapíše do súboru na aktuálnu pozíciu
  • fread — Čítanie zo súboru s binárnou podporou
  • fscanf — Parsuje vstup zo súboru podľa zadaného formátu
  • fseek — Umožňuje meniť pozíciu interného ukazovateľa súboru
  • fstat — Poskytne informácie o súbore zadanom jeho deskriptorom
  • ftell — Určí pozíciu interného ukazovateľa súboru
  • ftruncate — Skráti súbor na zadanú dĺžku
  • fwrite — Zápis do súboru s binárnou podporou
  • glob — Vyhľadáva súbory zodpovedajúce zadanému výrazu
  • is_dir — Zistí, či súbor s daným názvom reprezentuje adresár
  • is_executable — Zistí, či je súbor s daným názvom vykonávateľný
  • is_file — Zistí, či súbor s daným názvom je obyčajný súbor
  • is_link — Zistí, či súbor s daným názvom je symbolický link
  • is_readable — Zistí, či zo súboru možno čítať
  • is_uploaded_file — Zistí, či bol súbor uploadnutý cez HTTP POST
  • is_writable — Zistí, či do súboru možno zapisovať
  • is_writeable — Zistí, či do súboru možno zapisovať
  • lchgrp — Changes group ownership of symlink
  • lchown — Changes user ownership of symlink
  • link — Vytvorí hard-link
  • linkinfo — Poskytne informácie o linku
  • lstat — Poskytne informácie o súbore alebo symbolickom linku
  • mkdir — Vytvorí adresár
  • move_uploaded_file — Presunie uploadnutý súbor na nové miesto
  • parse_ini_file — Parsuje konfiguračný súbor
  • pathinfo — Vráti informácie o ceste k súboru
  • pclose — Uzatvorí procesový deskriptor súboru
  • popen — Otvorí procesový deskriptor súboru
  • readfile — Vypíše obsah súboru
  • readlink — Vráti cieľ symbolického linku
  • realpath — Vráti kanonickú absolútnu cestu
  • rename — Premenuje súbor
  • rewind — Posunie interný ukazovateľ súboru na jeho začiatokr
  • rmdir — Odstráni adresár
  • set_file_buffer — Alias pre stream_set_write_buffer
  • stat — Poskytne informácie o súbore
  • symlink — Vytvorí symbolický link
  • tempnam — Vytvorí súbor s jedinečným názvom
  • tmpfile — Creates a temporary file
  • touch — Nastaví pre súbor čas posledného prístupu a modifikácie
  • umask — Zmení hodnotu umask
  • unlink — Odstráni súbor


basename> <filepro
Last updated: Sun, 25 Nov 2007
 
add a note add a note User Contributed Notes
Súborový systém
Christian
17-Mar-2007 10:24
I just learned that, to specify file names in a portable manner, you DON'T need 'DIRECTORY_SEPARATOR' - just use '/'. This really surprised and shocked me, as until now I typed about a zillion times 'DIRECTORY_SEPARATOR' to stay platform independent - unnecessary. Don't make the same mistake.
tunnelareaten at gmail dot com
25-Feb-2005 08:27
I made this function to search and/or display files by extension or for a string occurance in the filename. Any comments or enhancements are welcome offcourse. I'll update this function soon.

usage: list_files([string], [string], [int 1 | 0], [int 1 | 0]);

search for extension: list_files([string], [string], [0], [int 1 | 0]);
returns array: $myArray = list_files([string], [string], [0], [0]);
echo result: list_files([string], [string], [0], [1]);

search for string occurance: list_files([string], [string], [1], [int 1 | 0]);
returns array: $myArray = list_files([string], [string], [1], [0]);
echo result: list_files([string], [string], [1], [1]);

<?php

function list_files($directory, $stringSearch, $searchHandler, $outputHandler) {
 
$errorHandler = false;
 
$result = array();
 if (!
$directoryHandler = @opendir ($directory)) {
  echo (
"<pre>\nerror: directory \"$directory\" doesn't exist!\n</pre>\n");
 return
$errorHandler = true;
 }
 if (
$searchHandler === 0) {
  while (
false !== ($fileName = @readdir ($directoryHandler))) {
   if(@
substr ($fileName, - @strlen ($stringSearch)) === $stringSearch) {
    @
array_push ($result, $fileName);
   }
  }
 }
 if (
$searchHandler === 1) {
  while(
false !== ($fileName = @readdir ($directoryHandler))) {
   if(@
substr_count ($fileName, $stringSearch) > 0) {
    @
array_push ($result, $fileName);
   }
  }
 }
 if ((
$errorHandler === true) &&  (@count ($result) === 0)) {
  echo (
"<pre>\nerror: no filetype \"$fileExtension\" found!\n</pre>\n");
 }
 else {
 
sort ($result);
  if (
$outputHandler === 0) {
   return
$result;
  }
  if (
$outputHandler === 1) {
   echo (
"<pre>\n");
  
print_r ($result);
   echo (
"</pre>\n");
  }
 }
}

?>
http://iubito.free.fr
30-Dec-2003 04:39
Here is a function I wrote to get the relative path between 2 files or directory.

We suppose that paths are wrotten in Unix format (/ instead of windows \\)

<?php
/**
 * Return the relative path between two paths / Retourne le chemin relatif entre 2 chemins
 *
 * If $path2 is empty, get the current directory (getcwd).
 * @return string
 */
function relativePath($path1, $path2='')
{
    if (
$path2 == '') {
       
$path2 = $path1;
       
$path1 = getcwd();
    }

   
//Remove starting, ending, and double / in paths
   
$path1 = trim($path1,'/');
   
$path2 = trim($path2,'/');
    while (
substr_count($path1, '//')) $path1 = str_replace('//', '/', $path1);
    while (
substr_count($path2, '//')) $path2 = str_replace('//', '/', $path2);

   
//create arrays
   
$arr1 = explode('/', $path1);
    if (
$arr1 == array('')) $arr1 = array();
   
$arr2 = explode('/', $path2);
    if (
$arr2 == array('')) $arr2 = array();
   
$size1 = count($arr1);
   
$size2 = count($arr2);

   
//now the hard part :-p
   
$path='';
    for(
$i=0; $i<min($size1,$size2); $i++)
    {
        if (
$arr1[$i] == $arr2[$i]) continue;
        else
$path = '../'.$path.$arr2[$i].'/';
    }
    if (
$size1 > $size2)
        for (
$i = $size2; $i < $size1; $i++)
           
$path = '../'.$path;
    else if (
$size2 > $size1)
        for (
$i = $size1; $i < $size2; $i++)
           
$path .= $arr2[$i].'/';

    return
$path;
}
?>

Enjoy ! :-)
Gregor Mosheh
22-Aug-2003 05:23
This function searches a directory and returns an array of all files whose filename matches the specified regular expression. It's similar in concept to the Unix find program.

 function findfile($location='',$fileregex='') {
    if (!$location or !is_dir($location) or !$fileregex) {
       return false;
    }
 
    $matchedfiles = array();
 
    $all = opendir($location);
    while ($file = readdir($all)) {
       if (is_dir($location.'/'.$file) and $file <> ".." and $file <> ".") {
          $subdir_matches = findfile($location.'/'.$file,$fileregex);
          $matchedfiles = array_merge($matchedfiles,$subdir_matches);
          unset($file);
       }
       elseif (!is_dir($location.'/'.$file)) {
          if (preg_match($fileregex,$file)) {
             array_push($matchedfiles,$location.'/'.$file);
          }
       }
    }
    closedir($all);
    unset($all);
    return $matchedfiles;
 }

$htmlfiles = findfile('/some/dir','/\.(htm|html)$/');
Gregor Mosheh
16-Jul-2003 10:25
I needed a function to find disk usage for a directory and its subs, so here it is. It's kinda like the Unix du program, except it returns the usage in bytes, not blocks.

function du($location) {
   if (!$location or !is_dir($location)) {
      return 0;
   }

   $total = 0;

   $all = opendir($location);
   while ($file = readdir($all)) {
      if (is_dir($location.'/'.$file) and $file <> ".." and $file <> ".") {
         $total += du($location.'/'.$file);
         unset($file);
      }
      elseif (!is_dir($location.'/'.$file)) {
         $stats = stat($location.'/'.$file);
         $total += $stats['size'];
         unset($file);
      }
   }
   closedir($all);
   unset($all);
   return $total;
}

print du('/some/directory');
l_domenech at yahoo dot ca
03-Jul-2003 10:25
In the code samples of the user-contributed notes, you'll find functions that sometimes need a slash at the end of a folder path and sometimes don't.

Here's a little function to append a slash at the end of a path if there isn't one already.

function append_slash_if_none($string)
    {
    if (ereg ("/$", $string))
        {
        return $string;
        }
    else
        {
        return ereg_replace("$", "/", $string);
        }
    }

(Replace with a backslash if you're on Windows...)
mitra at mitra dot biz
15-May-2003 10:10
Pollard@php.net contributed this in response to a question on setting these variables ...
This option *IS* settable within your PHP scripts.
Example:

<?php
  ini_set
('auto_detect_line_endings', true);
 
$contents = file('unknowntype.txt');

 
ini_set('auto_detect_line_endings', false);
 
$content2 = file('unixfile.txt');
?>

Note, with PHP 4.3 anytime Mac files are read using fgets or file you'll need to auto_detect_line_endings since \n is otherwise assumed.  However, with PHP 5.0, stream_get_line() will allow you to specify what line ending character to read up to.

\\ Read a line from a MAC file
stream_get_line($fp, 4096, "\r");

\\ Read a line from a UNIX file
stream_get_line($fp, 4096, "\n");

\\ Read a line from a DOS file
stream_get_line($fp, 4096, "\r\n");

\\ Read a line up to any filesystem line ending
ini_set('auto_detect_line_endings', true); fgets($fp);

\\ You can also make up your own line ending characters:
\\ Read up to the first instance of ":"
stream_get_line($fp, 4096, ":");
regis at webstuff dot com dot br
03-Apr-2003 07:49
Here is a useful function if you're having trouble writing raw bytes into a file.

It receives an integer and returns an array containing the ASCII values of the bytes on each index of the array.

function int2bytes($number){
  $byte = $number;
  $i=0;
  do{
    $dec_tmp = $byte;
   
    $byte = bcdiv($byte,256,0);
    $resto = $dec_tmp - (256 * $byte);
    $return[] = $resto;
  } while($byte >= 256);
  if($byte) $return[] = $byte;
  return array_reverse($return);
}

Example:

$arr = int2bytes(75832);

$arr will contain the following values:
Array
(
    [0] => 1
    [1] => 40
    [2] => 56
)

Now, to write this data to the file, just use a fputs() with chr(), just like this:

fputs($fp,chr($arr[0]).chr($arr[1]).chr($arr[2]))

-- Regis
jdhurn at uberidx dot com
08-Mar-2003 07:18
This is a function I use to determine if a file contains Binary information. I use this for my search engine so that it doesn't try to index files like .zip or .mp3 or any other file that doesn't contain readable information. It makes use of the Character Type Extension if it's loaded, if it's not then it uses Regular Expressions.

function is_binary($link)
{
     $tmpStr  = '';
     @$fp     = fopen($link, 'rb');
     @$tmpStr = fread($fp, 256);
     @fclose($fp);

     if($tmpStr != '')
     {
          $tmpStr = str_replace(chr(10), '', $tmpStr);
          $tmpStr = str_replace(chr(13), '', $tmpStr);

          $tmpInt = 0;

           for($i =0; $i < strlen($tmpStr); $i++)
          {
                if( extension_loaded('ctype') )
               {
                    if( !ctype_print($tmpStr[$i]) )
                         $tmpInt++;
               }
               else
               {
                   if( !eregi("[[:print:]]+", $tmpStr[$i]) )
                         $tmpInt++;
               }
           }

           if($tmpInt > 5)
                return(0);
            else
                return(1);
     }
     else
           return(0);
}

basename> <filepro
Last updated: Sun, 25 Nov 2007
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites