Pour ce qui est de la gestion des seuls fichiers, théoriquement ça
marche ( théoriquement, car je ne peux pas tester en réel pour
l'instant. ) Ceci d'après les commentaires des développeurs Américains
sur le site du PHP Manual.
Cependant, j'aimerais savoir si, compte tenu du fait que le
répertoire suivant:
/home/ortolojf/www/php/courses_anciennes
a pour gid/uid users/ortolojf,
à ce moment-là, si dans ce répertoire je met un script PHP avec ces
mêmes gid/uid ( par FTP donc ), ce script contenant les instructions
suivantes:
if(!($fp = @opendir('.')))
{ echo "Ouverture en écriture du répertoire courant
impossible<br>\n";
die("");
}
Donc, le gid/uid du script sera: apache/apache , et celui du
répertoire courant: ortolojf/users , alors qu'on est en Safe Mode à On.
En supposant que je ne peux pas changer celà, les instructions
ci-dessus vont-elles fonctionner, et sinon, où celà va-t-il foirer ?
Vous voyez, que pour la gestion de mon site, qui crée des fichiers
temporaires, j'ai besoin de pouvoir supprimer ces fichiers temporaires,
alors même que je ne connais pas leurs noms exacts, seulement leurs
expressions rationnelles associées.
Je précise bien, que je supprime ces fichiers temporaires, une fois
par jour, je pourrais à la rigueur, enregistrer dans un fichier fixe,
les noms des fichiers temporaires créés, et puis lire ce fichier, et
supprimer les fichiers s'y trouvant. Je n'aime pas tellement cette idée,
qui me paraît peu sécurisée.
Comment faire dans ce cas, si les instructions ci-dessus ne
fonctionnent pas ?
Merci beaucoup de vos réponses.
Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Francois Ortolo
Bonjour
Personne ne sait ?
C'est pourtant simple: Le Safe Mode est à 'On', le serveur est un serveur Aapache avec PHP comme module est non pas en SuExec.
Donc, l'uid/gid d'un script PHP qui s'exécute, sera celui du serveur Apache ( apache/apache ), alors que l'uid/gid du répertoire courant, sera celui de l'utilisateur FTP qui l'aura créé. ( avec les permissions correctes, évidemment. )
Dans ces conditions, est-ce que le code suivant fonctionnera, et si non, où s'arrêtera-t-il ?
// Début du code.
if(!($fp = @opendir('.'))) { echo "Ouverture en écriture du répertoire courant impossible<br>n"; die(""); }
Merci beaucoup à toute personne pouvant me fixer les idées sur ce problème, car je ne peux tester en réel actuellement, à moins de m'abonner à Sivit, alors que je suis sur un mutualisé OVH pour encore un an...
Bien à vous.
Amicalement.
Jean-François Ortolo
Bonjour
Personne ne sait ?
C'est pourtant simple: Le Safe Mode est à 'On', le serveur est un
serveur Aapache avec PHP comme module est non pas en SuExec.
Donc, l'uid/gid d'un script PHP qui s'exécute, sera celui du serveur
Apache ( apache/apache ), alors que l'uid/gid du répertoire courant,
sera celui de l'utilisateur FTP qui l'aura créé. ( avec les permissions
correctes, évidemment. )
Dans ces conditions, est-ce que le code suivant fonctionnera, et si
non, où s'arrêtera-t-il ?
// Début du code.
if(!($fp = @opendir('.')))
{ echo "Ouverture en écriture du répertoire courant
impossible<br>n";
die("");
}
Merci beaucoup à toute personne pouvant me fixer les idées sur ce
problème, car je ne peux tester en réel actuellement, à moins de
m'abonner à Sivit, alors que je suis sur un mutualisé OVH pour encore un
an...
C'est pourtant simple: Le Safe Mode est à 'On', le serveur est un serveur Aapache avec PHP comme module est non pas en SuExec.
Donc, l'uid/gid d'un script PHP qui s'exécute, sera celui du serveur Apache ( apache/apache ), alors que l'uid/gid du répertoire courant, sera celui de l'utilisateur FTP qui l'aura créé. ( avec les permissions correctes, évidemment. )
Dans ces conditions, est-ce que le code suivant fonctionnera, et si non, où s'arrêtera-t-il ?
// Début du code.
if(!($fp = @opendir('.'))) { echo "Ouverture en écriture du répertoire courant impossible<br>n"; die(""); }
Merci beaucoup à toute personne pouvant me fixer les idées sur ce problème, car je ne peux tester en réel actuellement, à moins de m'abonner à Sivit, alors que je suis sur un mutualisé OVH pour encore un an...
/* Ceci est la façon correcte de traverser un dossier. */ while (false !== ($file = readdir($handle))) { echo "$filen"; }
/* Ceci est la MAUVAISE façon de traverser un dossier. */ while ($file = readdir($handle)) { echo "$filen"; }
Sur le reste, je n'ai jamais eu de pb pour effacer des fichiers dans un dossier donné, si ceux-ci ont été crées par le serveur.
Est-ce une bonne chose de mettre ton script dans le même dossier où il doit effacer les fichiers ? Pour les questions de sécurité que tu évoques, est-ce que tes fichiers temporaires ne pourraient pas être enregistrés dans un dossier spécifique protégé par un .htaccess ?
-- Dominique Wojylac http://wojylac.free.fr Un proverbe chinois dit que lorsqu'on a rien à dire on cite généralement un proverbe chinois.
/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
echo "$filen";
}
/* Ceci est la MAUVAISE façon de traverser un dossier. */
while ($file = readdir($handle)) {
echo "$filen";
}
Sur le reste, je n'ai jamais eu de pb pour effacer des fichiers dans un
dossier donné, si ceux-ci ont été crées par le serveur.
Est-ce une bonne chose de mettre ton script dans le même dossier où il
doit effacer les fichiers ? Pour les questions de sécurité que tu
évoques, est-ce que tes fichiers temporaires ne pourraient pas être
enregistrés dans un dossier spécifique protégé par un .htaccess ?
--
Dominique Wojylac http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.
/* Ceci est la façon correcte de traverser un dossier. */ while (false !== ($file = readdir($handle))) { echo "$filen"; }
/* Ceci est la MAUVAISE façon de traverser un dossier. */ while ($file = readdir($handle)) { echo "$filen"; }
Sur le reste, je n'ai jamais eu de pb pour effacer des fichiers dans un dossier donné, si ceux-ci ont été crées par le serveur.
Est-ce une bonne chose de mettre ton script dans le même dossier où il doit effacer les fichiers ? Pour les questions de sécurité que tu évoques, est-ce que tes fichiers temporaires ne pourraient pas être enregistrés dans un dossier spécifique protégé par un .htaccess ?
-- Dominique Wojylac http://wojylac.free.fr Un proverbe chinois dit que lorsqu'on a rien à dire on cite généralement un proverbe chinois.
Jean-Francois Ortolo
Dominique wrote:
Une remarque : la doc de readdir précise : /* Ceci est la façon correcte de traverser un dossier. */ while (false !== ($file = readdir($handle))) { echo "$filen"; }
/* Ceci est la MAUVAISE façon de traverser un dossier. */ while ($file = readdir($handle)) { echo "$filen"; }
Sur le reste, je n'ai jamais eu de pb pour effacer des fichiers dans un dossier donné, si ceux-ci ont été crées par le serveur.
Est-ce une bonne chose de mettre ton script dans le même dossier où il doit effacer les fichiers ? Pour les questions de sécurité que tu évoques, est-ce que tes fichiers temporaires ne pourraient pas être enregistrés dans un dossier spécifique protégé par un .htaccess ?
Bonjour Monsieur
Tout d'abord, merci de m'avoir répondu, car je cherche une réponse à ma question, depuis déjà plusieurs jours.
Ensuite, c'est évident que du moment que les fichiers ont été créés par un script PHP ( ce qui est le cas, puisque ces fichiers sont des fichiers temporaires ), c'est évident donc, que si l'on a le nom du fichier, il est possible de faire simplement celà: @unlink($fichier); pour supprimer le fichier $fichier situé dans le répertoire courant.
Mais ( Grave ;) ) il y a un mais.
Pour accéder à ce nom de fichier, je suis obligé de lire le contenu du répertoire courant, et de sélectionner les noms corrects de fichiers à supprimer, d'après une expression rationnelle... Celà implique de faire un opendir('.'), des readdir(), et un closedir(), d'où ma question... Arf ! arf ! qui rencontrera, je le sens, bientôt une réponse:
Ces instructions de lecture de répertoire, sont-elles possibles, sachant que le safe Mode est à 'On', et que l'interpréteur PHP fonctionen comme module, et non pas en SuExec ?
Ouf. Enfin.
J'ai dit tout ce que j'avais à dire, demandé tout ce que j'avais à demander, le tout c'est d'avoir des réponses...
Bien à vous.
Amicalement.
Jean-François Ortolo
-- Visitez mon site gratuit donnant des Statistiques et des Historiques Graphiques sur les Courses de Chevaux: http://www.ortolojf-courses.com
Dominique wrote:
Une remarque : la doc de readdir précise :
/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
echo "$filen";
}
/* Ceci est la MAUVAISE façon de traverser un dossier. */
while ($file = readdir($handle)) {
echo "$filen";
}
Sur le reste, je n'ai jamais eu de pb pour effacer des fichiers dans un
dossier donné, si ceux-ci ont été crées par le serveur.
Est-ce une bonne chose de mettre ton script dans le même dossier où il
doit effacer les fichiers ? Pour les questions de sécurité que tu
évoques, est-ce que tes fichiers temporaires ne pourraient pas être
enregistrés dans un dossier spécifique protégé par un .htaccess ?
Bonjour Monsieur
Tout d'abord, merci de m'avoir répondu, car je cherche une réponse à
ma question, depuis déjà plusieurs jours.
Ensuite, c'est évident que du moment que les fichiers ont été créés
par un script PHP ( ce qui est le cas, puisque ces fichiers sont des
fichiers temporaires ), c'est évident donc, que si l'on a le nom du
fichier, il est possible de faire simplement celà: @unlink($fichier);
pour supprimer le fichier $fichier situé dans le répertoire courant.
Mais ( Grave ;) ) il y a un mais.
Pour accéder à ce nom de fichier, je suis obligé de lire le contenu
du répertoire courant, et de sélectionner les noms corrects de fichiers
à supprimer, d'après une expression rationnelle... Celà implique de
faire un opendir('.'), des readdir(), et un closedir(), d'où ma
question... Arf ! arf ! qui rencontrera, je le sens, bientôt une réponse:
Ces instructions de lecture de répertoire, sont-elles possibles,
sachant que le safe Mode est à 'On', et que l'interpréteur PHP
fonctionen comme module, et non pas en SuExec ?
Ouf. Enfin.
J'ai dit tout ce que j'avais à dire, demandé tout ce que j'avais à
demander, le tout c'est d'avoir des réponses...
Bien à vous.
Amicalement.
Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
Une remarque : la doc de readdir précise : /* Ceci est la façon correcte de traverser un dossier. */ while (false !== ($file = readdir($handle))) { echo "$filen"; }
/* Ceci est la MAUVAISE façon de traverser un dossier. */ while ($file = readdir($handle)) { echo "$filen"; }
Sur le reste, je n'ai jamais eu de pb pour effacer des fichiers dans un dossier donné, si ceux-ci ont été crées par le serveur.
Est-ce une bonne chose de mettre ton script dans le même dossier où il doit effacer les fichiers ? Pour les questions de sécurité que tu évoques, est-ce que tes fichiers temporaires ne pourraient pas être enregistrés dans un dossier spécifique protégé par un .htaccess ?
Bonjour Monsieur
Tout d'abord, merci de m'avoir répondu, car je cherche une réponse à ma question, depuis déjà plusieurs jours.
Ensuite, c'est évident que du moment que les fichiers ont été créés par un script PHP ( ce qui est le cas, puisque ces fichiers sont des fichiers temporaires ), c'est évident donc, que si l'on a le nom du fichier, il est possible de faire simplement celà: @unlink($fichier); pour supprimer le fichier $fichier situé dans le répertoire courant.
Mais ( Grave ;) ) il y a un mais.
Pour accéder à ce nom de fichier, je suis obligé de lire le contenu du répertoire courant, et de sélectionner les noms corrects de fichiers à supprimer, d'après une expression rationnelle... Celà implique de faire un opendir('.'), des readdir(), et un closedir(), d'où ma question... Arf ! arf ! qui rencontrera, je le sens, bientôt une réponse:
Ces instructions de lecture de répertoire, sont-elles possibles, sachant que le safe Mode est à 'On', et que l'interpréteur PHP fonctionen comme module, et non pas en SuExec ?
Ouf. Enfin.
J'ai dit tout ce que j'avais à dire, demandé tout ce que j'avais à demander, le tout c'est d'avoir des réponses...
Bien à vous.
Amicalement.
Jean-François Ortolo
-- Visitez mon site gratuit donnant des Statistiques et des Historiques Graphiques sur les Courses de Chevaux: http://www.ortolojf-courses.com
dwojylac.nospam
Jean-Francois Ortolo wrote:
Celà implique de faire un opendir('.'), des readdir(), et un closedir(), d'où ma question... Arf ! arf ! qui rencontrera, je le sens, bientôt une réponse:
Ces instructions de lecture de répertoire, sont-elles possibles, sachant que le safe Mode est à 'On', et que l'interpréteur PHP fonctionen comme module, et non pas en SuExec ?
un phpinfo() devrait te donner la réponse sur les fonctions desactivées sur ton serveur et la configuration de safe_mode_gid
et ici la liste des fonctions désactivées par safe_mode http://www.nexen.net/docs/php/annotee/features.safe-mode.functions.php
readdir n'y est pas...
-- Dominique Wojylac http://wojylac.free.fr Un proverbe chinois dit que lorsqu'on a rien à dire on cite généralement un proverbe chinois.
Celà implique de faire un opendir('.'), des readdir(), et un closedir(),
d'où ma question... Arf ! arf ! qui rencontrera, je le sens, bientôt une
réponse:
Ces instructions de lecture de répertoire, sont-elles possibles,
sachant que le safe Mode est à 'On', et que l'interpréteur PHP
fonctionen comme module, et non pas en SuExec ?
un phpinfo() devrait te donner la réponse sur les fonctions desactivées
sur ton serveur et la configuration de safe_mode_gid
et ici la liste des fonctions désactivées par safe_mode
http://www.nexen.net/docs/php/annotee/features.safe-mode.functions.php
readdir n'y est pas...
--
Dominique Wojylac http://wojylac.free.fr
Un proverbe chinois dit que lorsqu'on a rien à dire
on cite généralement un proverbe chinois.
Celà implique de faire un opendir('.'), des readdir(), et un closedir(), d'où ma question... Arf ! arf ! qui rencontrera, je le sens, bientôt une réponse:
Ces instructions de lecture de répertoire, sont-elles possibles, sachant que le safe Mode est à 'On', et que l'interpréteur PHP fonctionen comme module, et non pas en SuExec ?
un phpinfo() devrait te donner la réponse sur les fonctions desactivées sur ton serveur et la configuration de safe_mode_gid
et ici la liste des fonctions désactivées par safe_mode http://www.nexen.net/docs/php/annotee/features.safe-mode.functions.php
readdir n'y est pas...
-- Dominique Wojylac http://wojylac.free.fr Un proverbe chinois dit que lorsqu'on a rien à dire on cite généralement un proverbe chinois.
Jean-Francois Ortolo
Dominique wrote:
un phpinfo() devrait te donner la réponse sur les fonctions desactivées sur ton serveur et la configuration de safe_mode_gid
et ici la liste des fonctions désactivées par safe_mode http://www.nexen.net/docs/php/annotee/features.safe-mode.functions.php
readdir n'y est pas...
Ok
Mais la fonction touch($fichier) est censée vérifier que le fichier/dossier a le même uid/gid que celui du script qui l'exécute.
...Alors que sur le site du PHP Manual, il y a des commentaires de développeurs Américains, disant qu'il est possible de créer un fichier sur un répertoire courant de uid/gid différent de celui du script, en faisant:
@touch($fichier); // Cela crée le fichier de longueur zéro, // et de uid/gid == celui du script, // pas d'erreur d'après les développeurs // Américains.
if(!($fp = @fopen($fichier, "w"))) // Possible, car l'uid/gid { // Message d'erreur... // du fichier $fichier die(""); // est le même que celui } // du script.
// traitement en écriture sur le fichier
@close($fichier); // idem.
Par ailleurs la documentation du site http://www.nexen.net que tu indiques, spécifie bien que c'est une liste "non exhaustive", donc il se peut qu'il y ait d'autres fonctions que celles-ci, désactivées par le safe mode...
Comme je l'ai dit au début, je n'ai pas la possibilité de vérifier si ça marche en réel, car mon abonnement ( encore un an ) mutualisé 240Plan chez OVH, est en SuExec, avec Safe Mode à 'Off'.
Je fais ces recherches, car l'hébergeur que je souhaite avoir, Sivit, a effectivement le Safe Mode à 'On', et PHP fontionne comme module, et non pas en SuExec. Je ne peux pas tester en réel sans savoir si ça va fonctionner, car mon site fournit des pronostics quotidiennement au site www.lescourses.com. Je ne peux pas tester l'hébergement Sivit tout en gardant mon hébergement OVH actuel, d'abord car cela ferait des 'duplicate content' vis-à-vis du moteur de recherche Google, et je me retrouverais blacklisté sans avoir le temps de dire Ouf.
Je ne peux pas non plus tester sur ma machine en local chez moi, car je n'ai qu'un seul ordinateur, et le Safe Mode est considéré comme inopérant, quand l'adresse ip du client est la même que celle du serveur, ou que la machine est la même.
Merci beaucoup de m'indiquer si tu peux me donner d'autres liens donnant les fonctions désactivées par le Safe Mode.
Et également merci de me dire si la fonction touch($fichier) fonctionne quand même, quand le Safe Mode est à 'On'.
Bien à toi.
Amicalement.
Jean-François Ortolo
-- Visitez mon site gratuit donnant des Statistiques et des Historiques Graphiques sur les Courses de Chevaux: http://www.ortolojf-courses.com
Dominique wrote:
un phpinfo() devrait te donner la réponse sur les fonctions desactivées
sur ton serveur et la configuration de safe_mode_gid
et ici la liste des fonctions désactivées par safe_mode
http://www.nexen.net/docs/php/annotee/features.safe-mode.functions.php
readdir n'y est pas...
Ok
Mais la fonction touch($fichier) est censée vérifier que le
fichier/dossier a le même uid/gid que celui du script qui l'exécute.
...Alors que sur le site du PHP Manual, il y a des commentaires de
développeurs Américains, disant qu'il est possible de créer un fichier
sur un répertoire courant de uid/gid différent de celui du script, en
faisant:
@touch($fichier); // Cela crée le fichier de longueur zéro,
// et de uid/gid == celui du script,
// pas d'erreur d'après les développeurs
// Américains.
if(!($fp = @fopen($fichier, "w"))) // Possible, car l'uid/gid
{ // Message d'erreur... // du fichier $fichier
die(""); // est le même que celui
} // du script.
// traitement en écriture sur le fichier
@close($fichier); // idem.
Par ailleurs la documentation du site http://www.nexen.net que tu
indiques, spécifie bien que c'est une liste "non exhaustive", donc il se
peut qu'il y ait d'autres fonctions que celles-ci, désactivées par le
safe mode...
Comme je l'ai dit au début, je n'ai pas la possibilité de vérifier si
ça marche en réel, car mon abonnement ( encore un an ) mutualisé 240Plan
chez OVH, est en SuExec, avec Safe Mode à 'Off'.
Je fais ces recherches, car l'hébergeur que je souhaite avoir, Sivit,
a effectivement le Safe Mode à 'On', et PHP fontionne comme module, et
non pas en SuExec. Je ne peux pas tester en réel sans savoir si ça va
fonctionner, car mon site fournit des pronostics quotidiennement au site
www.lescourses.com. Je ne peux pas tester l'hébergement Sivit tout en
gardant mon hébergement OVH actuel, d'abord car cela ferait des
'duplicate content' vis-à-vis du moteur de recherche Google, et je me
retrouverais blacklisté sans avoir le temps de dire Ouf.
Je ne peux pas non plus tester sur ma machine en local chez moi, car
je n'ai qu'un seul ordinateur, et le Safe Mode est considéré comme
inopérant, quand l'adresse ip du client est la même que celle du
serveur, ou que la machine est la même.
Merci beaucoup de m'indiquer si tu peux me donner d'autres liens
donnant les fonctions désactivées par le Safe Mode.
Et également merci de me dire si la fonction touch($fichier)
fonctionne quand même, quand le Safe Mode est à 'On'.
Bien à toi.
Amicalement.
Jean-François Ortolo
--
Visitez mon site gratuit donnant des Statistiques
et des Historiques Graphiques sur les Courses de Chevaux:
http://www.ortolojf-courses.com
un phpinfo() devrait te donner la réponse sur les fonctions desactivées sur ton serveur et la configuration de safe_mode_gid
et ici la liste des fonctions désactivées par safe_mode http://www.nexen.net/docs/php/annotee/features.safe-mode.functions.php
readdir n'y est pas...
Ok
Mais la fonction touch($fichier) est censée vérifier que le fichier/dossier a le même uid/gid que celui du script qui l'exécute.
...Alors que sur le site du PHP Manual, il y a des commentaires de développeurs Américains, disant qu'il est possible de créer un fichier sur un répertoire courant de uid/gid différent de celui du script, en faisant:
@touch($fichier); // Cela crée le fichier de longueur zéro, // et de uid/gid == celui du script, // pas d'erreur d'après les développeurs // Américains.
if(!($fp = @fopen($fichier, "w"))) // Possible, car l'uid/gid { // Message d'erreur... // du fichier $fichier die(""); // est le même que celui } // du script.
// traitement en écriture sur le fichier
@close($fichier); // idem.
Par ailleurs la documentation du site http://www.nexen.net que tu indiques, spécifie bien que c'est une liste "non exhaustive", donc il se peut qu'il y ait d'autres fonctions que celles-ci, désactivées par le safe mode...
Comme je l'ai dit au début, je n'ai pas la possibilité de vérifier si ça marche en réel, car mon abonnement ( encore un an ) mutualisé 240Plan chez OVH, est en SuExec, avec Safe Mode à 'Off'.
Je fais ces recherches, car l'hébergeur que je souhaite avoir, Sivit, a effectivement le Safe Mode à 'On', et PHP fontionne comme module, et non pas en SuExec. Je ne peux pas tester en réel sans savoir si ça va fonctionner, car mon site fournit des pronostics quotidiennement au site www.lescourses.com. Je ne peux pas tester l'hébergement Sivit tout en gardant mon hébergement OVH actuel, d'abord car cela ferait des 'duplicate content' vis-à-vis du moteur de recherche Google, et je me retrouverais blacklisté sans avoir le temps de dire Ouf.
Je ne peux pas non plus tester sur ma machine en local chez moi, car je n'ai qu'un seul ordinateur, et le Safe Mode est considéré comme inopérant, quand l'adresse ip du client est la même que celle du serveur, ou que la machine est la même.
Merci beaucoup de m'indiquer si tu peux me donner d'autres liens donnant les fonctions désactivées par le Safe Mode.
Et également merci de me dire si la fonction touch($fichier) fonctionne quand même, quand le Safe Mode est à 'On'.
Bien à toi.
Amicalement.
Jean-François Ortolo
-- Visitez mon site gratuit donnant des Statistiques et des Historiques Graphiques sur les Courses de Chevaux: http://www.ortolojf-courses.com