Limitations de ini_set()

Mammouth du PHP | 19672 Messages

11 oct. 2006, 15:30

Salut tout le monde,
je me heurte à un petit mystère avec une reconfiguration temporaire d'un paramètre de configuration PHP. Je veux en effet modifier le paramètre memory_limit qui par défaut est à 8M en le montant à 20M.

La question pour gourou de la config : est-ce que par hasard la fonction ini_set() serait retreinte quant à certains paramètres ?

Parce que le problème que j'ai, c'est que ça ne donne strictement rien du tout, aucune modification n'est prise en compte, ni en local (Apache2, PHP5, WinXP Pro SP2), ni à distance (même chose sous Linux) et dans aucun des deux cas la fonciton n'est désactivée. Pire que ça, en local, je n'ai même pas de retour avec ini_get() sur ce paramètre...:-k

J'ai fait en local un ini_get_all() : pas moyen de retrouver non plus memory_limit dans la liste, et pourtant la ligne est bien là dans le php.ini : So what ? Est-ce que je saute tout de suite par la fenêtre ? :afraid:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 514 Messages

11 oct. 2006, 17:17

dans le htaccess, tu dois pouvoir faire un truc du genre :

php_value memory_limit "20M"

comme c'est apache, ça devrait passer mieux qu'en php non ?
Ne jamais repousser à demain ce qu'on peut faire après demain ...

Mammouth du PHP | 505 Messages

11 oct. 2006, 17:21

pour que ce param soit pris en compte, il faut que l'option de compile "--enable-memory-limit" ait été spécifié lors du build de php.

Sinon, il est tout simplement ignoré, que ce soit dans le php.ini ou ailleurs.

Mammouth du PHP | 19672 Messages

11 oct. 2006, 17:27

Mouais, j'ai vu ça dans la doc aussi, merci pour l'info, je vais voir comment contourner le problème.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Mammouth du PHP | 505 Messages

11 oct. 2006, 17:32

juste pour complément... Ca signifie actuellement que tu n'as pas de limit de mémoire...

pas de limite a 8Mo car le param est ignoré...

et tu met à 0 pour ne pas avoir de limite quand le param est pris en compte.
Donc si ton souci, c'est un pb de mémoire... l'activation de ce param ne vas pas t'arranger. Si ton but c'est de disposer des fonctions lié a ce mode comme memory_get_isage() ou memory_get_peak_usage(), la ca le fait.

Mammouth du PHP | 19672 Messages

11 oct. 2006, 18:12

Le problème se pose lors d'un traitement d'image à la volée, et mes recherches ont abouti à cette constatation. En local, pas de problème, ça roule, mais en ligne, j'ai un paramètre à 8M et ça suffit pas apparemment. Donc j'ai envisagé d'utiliser ini_set() pour le modifier à 20 le temps du traitement, mais ça marche pas.

Comme c'est un dédié, je vais voir avec l'admin du serveur pour qu'il modifie le paramètre, je passerai pas trop de temps là-dessus.

Merci pour les réponses.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe: