OVH Community, votre nouvel espace communautaire.

Modification de comportement d'un script


jpeg
07/10/2009, 14h55
Merci : en fait, c'est résolu (erreur de ma part).

Sébastien Ferry
30/09/2009, 06h21
Un changement de locale qui gêne basename?
http://php.net/manual/fr/function.basename.php#86972
The results of the basename() function are dependent on your locale setting.

If basename() is returning blank results for strings with multibyte characters, you can try including the following in your script:


setlocale(LC_ALL, 'en_US.UTF8'); # or any other locale that can handle multibyte characters.

?>

However, the best solution to do this would be to change the locale setting on your system or webserver. For example, on Debian systems, this is done in /etc/init.d/apache

Citation Envoyé par Abazada
Bonjour,
__FILE__ renvoie un path physique
PHP_SELF renvoie un path relatif Apache
Oui, mais basename va supprimer le chemin pour conserver le nom de fichier.

Donc basename(__FILE__ / path physique) va renvoyer le nom du fichier du système, par exemple mes_fonctions.php, et basename(PHP_SELF / path relatif Apache) va renvoyer le nom du fichier appelé par Apache, par exemple: index.php?coucou=cestmoi.
Et du coup leur comparaison peut permettre de ne pas éxécuter une "librairie".

Une autre solution serait de mettre les fichier qui ne doivent pas être appelés directement dans un autre répertoire que /www (genre /librairies).

Abazada
30/09/2009, 04h49
Bonjour,
Une explication, non.
Par contre je ne comprends pas comment ça a pu marcher ??

__FILE__ renvoie un path physique
PHP_SELF renvoie un path relatif Apache

C'est normalement SCRIPT_FILENAME qu'on utilise pour ça, pas PHP_SELF.

PS: Oooops tout faux . Ai confondu basedir et basename...

jpeg
29/09/2009, 21h30
Bonjour,
J'utilise depuis déjà pas mal de temps cette ligne en début de script afin d'empêcher le chargement de fichier
Code:
   if (basename(__FILE__) == basename ($_SERVER['PHP_SELF'])) exit();
depuis ce matin, sans la moindre explication, cette ligne s'exécute systématiquement donc => exit !
Quelqu'un a-t-il une explication ?