PHP 5.3.8, JSON et CentOS 6

Nous exécutons CentOS 6 et PHP 5.3.8 (en tant que module Apache) qui devrait avoir JSON comme élément central (on me l’a dit). En regardant # php -i sur la ligne de commande, je peux voir sous Configure Command '--enable-json=shared' … génial!

Cependant, en regardant php_info () sur une page Web, Configure Command montre '--disable-json' .

Aucun problème je pensais, je vais juste l’installer en utilisant pecl:

 # yum update php # yum install php-pear # yum install gcc # pecl install json # service httpd restart 

Réussite, ça a du faire, j’ai pensé. Cependant, php -m montre:

Avertissement de PHP: Démarrage de PHP: impossible de charger la bibliothèque dynamic ‘/usr/lib64/php/modules/json.so’ – /usr/lib64/php/modules/json.so: symbole non défini: ZVAL_DELREF dans Unknown sur la ligne 0

Excuses si c’est une question idiote mais est-ce que quelqu’un sait ce qui se passe ici et pourriez-vous m’indiquer comment corriger ce problème pour que JSON commence à fonctionner?

Merci beaucoup

Je pensais suivre la solution. L’installation de PECL semblait entrer en conflit avec PHP 5.3.8. Après quelques recherches et quelques conseils, j’ai eu l’idée de:

 # yum remove php # yum install php 

Cependant, après d’autres conseils, nous avons plutôt:

 # yumdownloader php-common # rpm -Uvh --force php-common*.rpm # service httpd reload # rm php-common*.rpm 

Cela a fait l’affaire et JSON fonctionne maintenant à nouveau. J’espère que ceci aide quelqu’un d’autre.

Merci

télécharger json-1.2.1.tgz FROM PECL

 enter code heretar zxvf json-1.2.1.tgz cd json-1.2.1 vi JSON_parser.c 

Trouver ZVAL_DELREF remplacer à Z_DELREF_P (vous pouvez trouver à 3 place) et enregistrer le fichier

alors

 phpize ./configure make make install 

Vous pouvez obtenir votre json.so n’oubliez pas d’append à php.ini

  1. Se connecter à SSH
  2. Créez tmp et var / tmp exec

    mount -v -o remount,exec /tmp
    mount -v -o remount,exec /var/tmp

  3. Pas aller de l’avant et installer JSON

    pecl install json

  4. Et enfin, faites de nouveau tmp et var / tmp noexec

    mount -v -o remount,noexec /tmp
    mount -v -o remount,noexec /var/tmp