2009-08-17 3 views
3

J'essaie de lire certains paramètres de php.ini en utilisant zend. L'API que j'utilise estLecture php.ini en utilisant zend pour l'extension PHP (pas de langage PHP)

long zend_ini_long(char *name, uint name_length, int orig) 

Mais elle retourne toujours 0. Je l'ai vérifié deux fois le nom et a également fait en sorte que la valeur que je suis dans le php.ini est spécifiant plus alors 0. Est-ce que je suis disparu?

+0

Pouvez-vous montrer votre code? –

+0

Voici le code que j'ai écrit: long maxwait = zend_ini_long (ZEND_STRL ("max_execution_time"), 0); ZEND_STRL (str) est une macro zend qui se résout à (str), (sizeof (str) -1). Ce code est écrit dans une extension php (écrite en C). – ata

Répondre

3
long maxwait = zend_ini_long("max_execution_time", 
    sizeof("max_execution_time"), 0); 

Le problème est que ZEND_STRL ne retourne pas la bonne longueur de la façon que cette API est destiné à être utilisé, il ne faut pas l'utiliser. Je dois ajouter que la plupart des tables de hachage maintenues en interne par PHP supposent que le caractère de terminaison NUL est inclus dans la longueur de la chaîne hachée (sa partie du concept global de sécurité binaire), c'est pourquoi nous utilisons sizeof() plutôt que strlen() ou sizeof() - 1.

+0

Cela a fonctionné, merci beaucoup. – ata

+0

+1, c'est plutôt un mauvais piège que certaines des fonctions ont besoin de sizeof (string) et d'autres de sizeof (string) - 1, ça m'a fait trébucher avant. –

+0

Ok, maintenant j'essaie de lire les paramètres que j'ai écrits dans php.ini. Mais je ne suis pas capable de le récupérer. Il retourne toujours "". J'utilise zend_ini_string (field_name, sizeof (field_name), 0). C'est étrange pour moi de lire certains paramètres et pas d'autres paramètres. Y a-t-il une sorte de dénomination que nous devons utiliser? – ata

0

Avez-vous besoin de lire le fichier php.ini? Peut-être que l'information est disponible avec phpinfo()?

Mais si vous devez être le "www utilisateur" autorisé à lire le fichier du tout? Si vous modifiez les autorisations, cela renvoie-t-il toujours 0?

+0

Je suis en train d'écrire une extension php en C. J'ai lu quelques tutoriels et ils ne mentionnent rien concernant la modification des permissions pour que les extensions puissent lire php.ini. Toute idée où puis-je modifier les paramètres d'autorisation pour php xtensions? – ata

+0

Je pensais à quelque chose comme ça "ls -l /etc/php5/apache2/php.ini" et ensuite chmod si nécessaire. – Johan

+0

Non ça ne fonctionne pas. BTW j'utilise Windows. – ata

0

Vous pouvez utiliser la fonction php standard: ini_get ('var-name');

Exemple:

ini_get('include_path'); 
Questions connexes