Page 1 sur 4
[EDIT]executer une commande unix de php
Posté : 08 sept. 2009, 18:10
par damaskinos
Bonjour à tous,
Un petit soucis, filesize avec fichier de plus de 2Go retourne pas la taille de mon fichier. Ceci est normal vue que le type entier de PHP est signé, il supporte donc les fichiers de moins de 2 Go. Pour palier à cela j'essaye d'exécuter une commade shell sur unix pour avoir la taille du fichier mais j ai cette erreur qui apparait.
Je fais ca :
$out = shell_exec(' du -sk'.$filename);
Et l'erreur
Warning: shell_exec() [function.shell-exec]: Cannot execute using backquotes in Safe Mode in
J'ai regardé mon phpinfo et safe_mode est on en local value mais off en Master value, J'ai donc rajouté
ini_set('safe_mode', 'Off');
$out = shell_exec(' du -sk'.$filename);
et j'ai toujours l'erreur.
Quelqu'un aurait une idée?
Merci d'avance
[*EDIT] Si un moderateur passe par la priere de déplacer ce topic dans php avancé ou débutant selon votre jugement du probleme. je viens de me rendre compte j'ai posté dans POO. desole[/EDIT]
Re: [EDIT]executer une commande unix de php
Posté : 08 sept. 2009, 21:08
par Hywan
Hey

,
Attention, la directive
safe_mode sera supprimée à partir de PHP 6.
Sinon, sur cette page :
http://php.net/safe_mode, on apprend aussi que la directive
safe_mode est uniquement modifiable par le système, donc pas avec un simple appel à ini_set()

.
Re: [EDIT]executer une commande unix de php
Posté : 08 sept. 2009, 22:40
par damaskinos
Merci pour l'info,
J'ai déjà changé dans mon php.ini la valeur a off. Dans phpinfo dans la colonne Master value elle est a off mais pas dans local value. Je fais comment pour changer dans cette colonne?
Merci encore
Re: [EDIT]executer une commande unix de php
Posté : 08 sept. 2009, 23:05
par Hywan
T'as pensé à redémarrer Apache ?
Re: [EDIT]executer une commande unix de php
Posté : 08 sept. 2009, 23:42
par damaskinos
oui oui ca été fais mais Local value est pas affecté.
J'ai lu que cette valeur est affecté par httpd.conf, .htaccess, et ini_set, c'est pour ca j'ai essayé ini_set avant d'aller faire des modifs en dure mais je vais voir si je peux modifier mon httpd.conf pour voir. Je crois que phpinfo prenais sa config que dans php.ini je savais pas que httpd.conf aussi rentrait en compte. Bref j'ai lu ca ici
http://www.developpez.net/forums/d51053 ... ter-value/.
Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 01:27
par Sékiltoyai
Oui, lorsque php est chargé en tant que module apache, la configuration est modifiable par des directives php_value, php_flag, php_admin_value, php_admin_flag dans la configuration apache.
Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 08:28
par damaskinos
Merci de la précision sekil.
J'ai ajouté ceci dans mon httpd.conf et ca toujours rien changer
Code : Tout sélectionner
<IfModule mod_php5.c>
php_admin_flag safe_mode Off
</IfModule>
J'ai bien sur redémaré apache.
Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 09:28
par Sékiltoyai
Et sans le IfModule ?
Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 16:12
par damaskinos
Désolé du délais,
Y a 6h entre nous je crois

. Je ne pourrais pas tester avant un bout car j'ai des gens qui utilise le système en ce moment. Par contre j'ai regardé dans le fichier de config d'apache et je trouve rien qui ressemble à cette ligne
Si php est compilé en tant que module apache je devrais retrouver cette ligne non? J'ai php5.
Pour revenir à mon problème initial, est-ce qu'il y aurais une autre solution que lancer une commande shell pour avoir la taille d'un fichier de plus de 2Go? J'ai essayé d'ouvrir le fichier déplacer le pointeur de fichier à la fin et avec
ftell
estimer la taille mais
fopen
n'aime pas plus les fichiers de plus de 2Go. Toute idée serait la bienvenue.
Merci encore
Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 16:33
par Sékiltoyai
Pour revenir à mon problème initial, est-ce qu'il y aurais une autre solution que lancer une commande shell pour avoir la taille d'un fichier de plus de 2Go? J'ai essayé d'ouvrir le fichier déplacer le pointeur de fichier à la fin et avec
ftell
estimer la taille mais
fopen
n'aime pas plus les fichiers de plus de 2Go.
C'est à dire ?
Il te met une erreur ?
Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 16:46
par damaskinos
Voilà comment je procède
$filename = "13.rar"; //fichier de 4Go situe au meme niveau dont le path est bon
$a = fopen($filename, 'r');
fseek($a, 0, SEEK_END);
$out = ftell($a);
fclose($a);
var_dump($out);
La sortie
int(0)
Aucune erreur
Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 17:06
par Calimero
Bonjour,
Une question bête : as-tu pensé à regarder la page de manuel de filesize() (
http://fr.php.net/manual/fr/function.filesize.php ) ? Elle mentionne une solution à ton souci (à base de sprintf() ) dans un encadré blanc

Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 17:51
par damaskinos
Yep j'ai essayé et elle ne fonctionne pas plus

.
Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 18:44
par Calimero
Aïe, pas de chance.
Sinon dans la même page, dans les commentaires utilisateurs, il y a un demi-trillion de personnes qui ont eu semble t-il le même souci que toi et ont posté leurs codes. Tu n'aurais vraiment pas de chance si tu n'en trouves pas un qui fait ce que tu veux dans le tas amha

Re: [EDIT]executer une commande unix de php
Posté : 09 sept. 2009, 19:40
par damaskinos
Ouais,
Il y a beaucoup de solution j'ai essayé,
Tout ce qui lance des commandes externes, j'y arrive pas parce que dans phpinfo safe_mode est à on dans la colonne Local value et j'arrive pas à la changer. J'ai essayé dans le php ini rien, dans httpd.conf rien et je me suis rendu compte que j'étais pas compilé comme un module apache vue que je ne vois null part ou le module php est chargé.
Et pour les autres solutions le type int signé de php me restraint toujours.
Voilà ou j'en suis ceci dit si quelqu'un saurait comment changer la valeur de safe_mode dans la colonne local value bien je serais comblé

. Je crois une fois le tout fini je ferais un résumé sur les difficultés rencontrées et les solutions trouvées dans la partie contribution parce que pour télé verser des fichiers de plus de 2 Go y a beaucoup à tenir en compte alors qu'un simple uploade c'est facile.
Merci encore