Documentation du code de SPIP et de ses plugins

SPIP

flock.php

Gestion de recherche et d'écriture de répertoire ou fichiers

Table of Contents

Constants

_spip_attend_invalidation_opcode_cache  = true
_TEST_FILE_EXISTS  = \preg_match(',(online|free)[.]fr$,', $_ENV['HTTP_HOST'] ?? '')
Permettre d'éviter des tests file_exists sur certains hébergeurs

Functions

spip_fopen_lock()  : resource|bool
Ouvre un fichier et le vérrouille
spip_fclose_unlock()  : bool
Dévérrouille et ferme un fichier
spip_file_get_contents()  : string
Retourne le contenu d'un fichier, même si celui ci est compréssé avec une extension en `.gz`
lire_fichier()  : bool
Lit un fichier et place son contenu dans le paramètre transmis.
ecrire_fichier()  : bool
Écrit un fichier de manière un peu sûre
ecrire_fichier_securise()  : mixed
Écrire un contenu dans un fichier encapsulé en PHP pour en empêcher l'accès en l'absence de fichier htaccess
ecrire_fichier_calcule_si_modifie()  : bool|null
lire_fichier_securise()  : bool
Lire un fichier encapsulé en PHP
raler_fichier()  : never
Affiche un message d’erreur bloquant, indiquant qu’il n’est pas possible de créer le fichier à cause des droits sur le répertoire parent au fichier.
jeune_fichier()  : bool
Teste si un fichier est récent (moins de n secondes)
supprimer_fichier()  : bool
Supprimer un fichier de manière sympa (flock)
spip_unlink()  : mixed
Supprimer brutalement un fichier ou un dossier, s'il existe
spip_clear_opcode_cache()  : mixed
Invalidates a PHP file from any active opcode caches.
spip_attend_invalidation_opcode_cache()  : mixed
Attendre l'invalidation de l'opcache
supprimer_repertoire()  : bool
Suppression complete d'un repertoire.
sous_repertoire()  : string
Crée un sous répertoire
preg_files()  : array<string|int, mixed>
Parcourt récursivement le repertoire `$dir`, et renvoie les fichiers dont le chemin vérifie le pattern (preg) donné en argument.

Constants

_spip_attend_invalidation_opcode_cache

public mixed _spip_attend_invalidation_opcode_cache = true

_TEST_FILE_EXISTS

Permettre d'éviter des tests file_exists sur certains hébergeurs

public mixed _TEST_FILE_EXISTS = \preg_match(',(online|free)[.]fr$,', $_ENV['HTTP_HOST'] ?? '')

Functions

spip_fopen_lock()

Ouvre un fichier et le vérrouille

spip_fopen_lock(string $fichier, string $mode, int $verrou) : resource|bool
Parameters
$fichier : string

Chemin du fichier

$mode : string

Mode d'ouverture du fichier (r,w,...)

$verrou : int

Type de verrou (avec _SPIP_LOCK_MODE = 1)

Tags
link

pour le type de verrou.

see
_SPIP_LOCK_MODE
see
spip_fclose_unlock()
uses
spip_nfslock()

si _SPIP_LOCK_MODE = 2.

used-by
lire_fichier()
Return values
resource|bool

Ressource sur le fichier ouvert, sinon false.

spip_file_get_contents()

Retourne le contenu d'un fichier, même si celui ci est compréssé avec une extension en `.gz`

spip_file_get_contents(string $fichier) : string
Parameters
$fichier : string

Chemin du fichier

Return values
string

Contenu du fichier

lire_fichier()

Lit un fichier et place son contenu dans le paramètre transmis.

lire_fichier(string $fichier, string &$contenu[, array<string|int, mixed> $options = [] ]) : bool

Décompresse automatiquement les fichiers .gz

Parameters
$fichier : string

Chemin du fichier

$contenu : string

Le contenu du fichier sera placé dans cette variable

$options : array<string|int, mixed> = []

Options tel que :

  • 'phpcheck' => 'oui' : vérifie qu'on a bien du php
Tags
uses
spip_fopen_lock()
uses
spip_file_get_contents()
uses
spip_fclose_unlock()
used-by
lire_fichier_securise()
Return values
bool

true si l'opération a réussie, false sinon.

ecrire_fichier()

Écrit un fichier de manière un peu sûre

ecrire_fichier(string $fichier, string $contenu[, bool $ignorer_echec = false ][, bool $truncate = true ]) : bool

Cette écriture s’exécute de façon sécurisée en posant un verrou sur le fichier avant sa modification. Les fichiers .gz sont compressés.

Parameters
$fichier : string

Chemin du fichier

$contenu : string

Contenu à écrire

$ignorer_echec : bool = false
  • true pour ne pas raler en cas d'erreur
  • false affichera un message si on est webmestre
$truncate : bool = true

Écriture avec troncation ?

Tags
uses
raler_fichier()

Si le fichier n'a pu peut être écrit

see
lire_fichier()
see
supprimer_fichier()
used-by
ecrire_fichier_securise()
Return values
bool
  • true si l’écriture s’est déroulée sans problème.

ecrire_fichier_securise()

Écrire un contenu dans un fichier encapsulé en PHP pour en empêcher l'accès en l'absence de fichier htaccess

ecrire_fichier_securise(string $fichier, string $contenu[, bool $ecrire_quand_meme = false ][, bool $truncate = true ]) : mixed
Parameters
$fichier : string

Chemin du fichier

$contenu : string

Contenu à écrire

$ecrire_quand_meme : bool = false
  • true pour ne pas raler en cas d'erreur
  • false affichera un message si on est webmestre
$truncate : bool = true

Écriture avec troncation ?

Tags
uses
ecrire_fichier()

ecrire_fichier_calcule_si_modifie()

ecrire_fichier_calcule_si_modifie(string $fichier, string $contenu[, bool $force = false ]) : bool|null
Parameters
$fichier : string
$contenu : string
$force : bool = false
Return values
bool|null

false en cas d'erreur true en cas d'ecriture suite à modification null si fichier inchangé car pas de modif

lire_fichier_securise()

Lire un fichier encapsulé en PHP

lire_fichier_securise(string $fichier, string &$contenu[, array<string|int, mixed> $options = [] ]) : bool
Parameters
$fichier : string

Chemin du fichier

$contenu : string

Le contenu du fichier sera placé dans cette variable

$options : array<string|int, mixed> = []

Options tel que :

  • 'phpcheck' => 'oui' : vérifie qu'on a bien du php
Tags
uses
lire_fichier()
Return values
bool

true si l'opération a réussie, false sinon.

raler_fichier()

Affiche un message d’erreur bloquant, indiquant qu’il n’est pas possible de créer le fichier à cause des droits sur le répertoire parent au fichier.

raler_fichier(string $fichier) : never

Arrête le script PHP par un exit;

Parameters
$fichier : string
Tags
uses
minipres()

Pour afficher le message

used-by
ecrire_fichier()

Si le fichier n'a pu peut être écrit

Return values
never

jeune_fichier()

Teste si un fichier est récent (moins de n secondes)

jeune_fichier(string $fichier, int $n) : bool
Parameters
$fichier : string

Chemin du fichier

$n : int

Âge testé, en secondes

Return values
bool
  • true si récent, false sinon

supprimer_fichier()

Supprimer un fichier de manière sympa (flock)

supprimer_fichier(string $fichier[, bool $lock = true ]) : bool
Parameters
$fichier : string

Chemin du fichier

$lock : bool = true

true pour utiliser un verrou

Return values
bool
  • true si le fichier n'existe pas ou s'il a bien été supprimé
  • false si on n'arrive pas poser le verrou ou si la suppression échoue

Supprimer brutalement un fichier ou un dossier, s'il existe

spip_unlink(string $f) : mixed
Parameters
$f : string

Chemin du fichier

Tags
used-by
deplacer_fichier_upload()

spip_clear_opcode_cache()

Invalidates a PHP file from any active opcode caches.

spip_clear_opcode_cache(string $filepath) : mixed

If the opcode cache does not support the invalidation of individual files, the entire cache will be flushed. kudo : http://cgit.drupalcode.org/drupal/commit/?id=be97f50

Parameters
$filepath : string

The absolute path of the PHP file to invalidate.

spip_attend_invalidation_opcode_cache()

Attendre l'invalidation de l'opcache

spip_attend_invalidation_opcode_cache([mixed $timestamp = null ]) : mixed

Si opcache est actif et en mode validate_timestamps, le timestamp du fichier ne sera vérifié qu'après une durée en secondes fixée par revalidate_freq.

Il faut donc attendre ce temps là pour être sûr qu'on va bien bénéficier de la recompilation du fichier par l'opcache.

Ne fait rien en dehors de ce cas

Parameters
$timestamp : mixed = null
Tags
note

C'est une config foireuse déconseillée de opcode cache mais malheureusement utilisée par Octave.

link
http://stackoverflow.com/questions/25649416/when-exactly-does-php-5-5-opcache-check-file-timestamp-based-on-revalidate-freq
link
http://wiki.mikejung.biz/PHP_OPcache

sous_repertoire()

Crée un sous répertoire

sous_repertoire(string $base[, string $subdir = '' ][, bool $nobase = false ][, bool $tantpis = false ]) : string

Retourne $base/{$subdir}/ si le sous-repertoire peut être crée

Parameters
$base : string
  • Chemin du répertoire parent (avec $subdir)
  • sinon chemin du répertoire à créer
$subdir : string = ''
  • Nom du sous répertoire à créer,
  • non transmis, $subdir vaut alors ce qui suit le dernier / dans $base
$nobase : bool = false

true pour ne pas avoir le chemin du parent $base/ dans le retour

$tantpis : bool = false

true pour ne pas raler en cas de non création du répertoire

Tags
example
sous_repertoire(_DIR_CACHE, 'demo');
sous_repertoire(_DIR_CACHE . '/demo');
used-by
creer_repertoire_documents()
used-by
determine_upload()
Return values
string

Chemin du répertoire créé.

preg_files()

Parcourt récursivement le repertoire `$dir`, et renvoie les fichiers dont le chemin vérifie le pattern (preg) donné en argument.

preg_files(string $dir[, int|string $pattern = -1 ][, int $maxfiles = 10000 ][, array<string|int, mixed> $recurs = [] ]) : array<string|int, mixed>

En cas d'echec retourne un array() vide

Parameters
$dir : string

Répertoire à parcourir

$pattern : int|string = -1

Expression régulière pour trouver des fichiers, tel que [.]lock$

$maxfiles : int = 10000

Nombre de fichiers maximums retournés

$recurs : array<string|int, mixed> = []

false pour ne pas descendre dans les sous répertoires

Tags
example
$x = preg_files('ecrire/data/', '[.]lock$');
// $x array()
note

Attention, afin de conserver la compatibilite avec les repertoires '.plat' si $dir = 'rep/sous_rep_' au lieu de rep/sous_rep/ on scanne rep/ et on applique un pattern ^rep/sous_rep_

used-by
find_all_in_path()
used-by
actualiser_sessions()
Return values
array<string|int, mixed>

Chemins des fichiers trouvés.


        
On this page

Search results