2017-08-15 2 views
1

J'ai mis à jour la version de OpenSSL à 1.02l de 1.0.1e et la version PHP à partir de PHP 5.6-PHP 7.1.8 (PHP est installé à l'aide yum)recompiler PHP avec OpenSSL sur CentOS

Le problème est, PHP détecte encore la version OpenSSL à 1.0.1e alors que je Je veux savoir quelles sont mes options ici, comment puis-je dire à PHP d'utiliser la dernière version d'openssl installée? Ma découverte me dit que la seule façon de le faire est en recompilant PHP? (appréciera si quelqu'un peut me dire s'il y a un autre moyen) Si le seul moyen est en recompilant, j'ai besoin d'aide sur la façon de s'y prendre? quelles sont les étapes impliquées. De ma compréhension, voici comment je pense que je dois faire.

  • supprimer la version PHP installée de YUM
  • Télécharger la dernière version de PHP à partir des sources et décompressez dans le répertoire tmp
  • Compile & Installer PHP

Est-ce que je manque quelque chose ici?

** MISE A JOUR **

Voici la liste des extensions php installé à l'aide yum

php-bcmath      x86_64  7.1.8-1.el7.remi    @remi-php71  94 k 
php-common      x86_64  7.1.8-1.el7.remi    @remi-php71  7.9 M 
php-fedora-autoloader    noarch  0.2.1-2.el7     @epel    14 k 
php-gd       x86_64  7.1.8-1.el7.remi    @remi-php71  204 k 
php-intl       x86_64  7.1.8-1.el7.remi    @remi-php71  947 k 
php-json       x86_64  7.1.8-1.el7.remi    @remi-php71  80 k 
php-mbstring      x86_64  7.1.8-1.el7.remi    @remi-php71  2.8 M 
php-mysqlnd      x86_64  7.1.8-1.el7.remi    @remi-php71  850 k 
php-pdo       x86_64  7.1.8-1.el7.remi    @remi-php71  386 k 
php-pecl-zip      x86_64  1.13.5-2.el7.remi.7.1  @remi-php71  175 k 
php-php-gettext     noarch  1.0.12-1.el7     @epel    57 k 
php-process      x86_64  7.1.8-1.el7.remi    @remi-php71  180 k 
php-tcpdf       noarch  6.2.13-1.el7     @epel    11 M 
php-tcpdf-dejavu-sans-fonts  noarch  6.2.13-1.el7     @epel    1.5 M 
php-tidy       x86_64  7.1.8-1.el7.remi    @remi-php71  106 k 
php-xml       x86_64  7.1.8-1.el7.remi    @remi-php71  851 k 

Je veux maintenant configurer PHP pour utiliser ces extensions, jusqu'à présent je comeup avec la suite

./configure --with-openssl --with-openssl-dir=/usr/bin \ 
    --with-zlib \ 
    --enable-zip \ 
    --enable-xmlreader \ 
    --enable-xmlwriter \ 
    --enable-opcache \ 
    --enable-simplexml \ 
    --with-sqlite3 \ 
    --with-pdo-sqlite \ 
    --with-pdo-mysql=mysqlnd \ 
    --with-mysqli=mysqlnd \ 
    --with-mysql-sock=/var/lib/mysql/mysql.sock \ 
    --enable-mysqlnd \ 
    --with-mcrypt \ 
    --enable-mbstring \ 
    --enable-intl \ 
    --with-png-dir \ 
    --with-jpeg-dir \ 
    --enable-gd-native-ttf \ 
    --with-gd \ 
    --with-curl \ 
    --with-bz2 \ 
    --enable-bcmath 

Je veux juste savoir maintenant, si je dois permettre une prolongation de la liste ci-dessus dois-je utiliser --enable ou --with? par exemple, comment puis-je activer php-xml. Est-ce que je n'utilise que --enable-php-xml?

+0

Peut-être qu'il pourrait y avoir un repo plus à jour? –

+0

Le repo que j'ai installé à partir de déjà m'a donné la dernière version de PHP. Le problème est quand je l'installe à partir de yum, d'une certaine manière PHP obtient seulement openssl 1.0.1e alors que mon application a une dépendance avec openssl version 1.2.5 ou ci-dessus. –

+0

Notez que RHEL (et donc CentOS) 7.4 ont par défaut 1.0.2 opensl, donc PHP dans le dépôt remi l'utilisera (il faut attendre quelques semaines pour que cela arrive) –

Répondre

2

Oui, vous devez télécharger le paquet dev OpenSSL (sources/en-têtes), les sources de PHP et le configurer avec les touches suivantes:

--with-openssl --with-openssl-dir=/usr/local/bin 

comme par PHP Manual > OpenSSL > Installing/Configuring

Vous pouvez également utiliser d'autres clés comme --with-curl=/usr/local ou --with-gd - vérifier avec la documentation à PHP Manual > Appendices > Configure options et manuels d'installation pour tous les modules de votre besoin de le compiler avec comme GD2 ou Curl

REMARQUE: Vous devrez télécharger des dev-packages de chaque module qui va être compilé - il consomme beaucoup de temps, planifiez en conséquence.

NOTE 2: Gardez à l'esprit que tous les modules que vous allez compiler dans votre propre version de PHP sera accessible grâce à ses fonctions (comme de manipulation d'images, https/boucle requêtes etc), il est donc très recommandé d'utiliser uniquement des versions stables et éprouvées des modules ne pas ajouter une nouvelle vulnérabilité à votre site Web.

** MISE A JOUR **

./configure --with-openssl --with-openssl-dir=/usr/bin \ 
    --with-zlib=[DIR] \ 
    --enable-zip \ 
    --enable-opcache \ 
    --with-pdo-mysql=[DIR] \ 
    --with-mysqli=[DIR] \ 
    --with-mysql-sock=/var/lib/mysql/mysql.sock \ 
    --with-mcrypt=[DIR] \ 
    --enable-mbstring \ 
    --enable-intl \ 
    --with-png-dir=[DIR] \ 
    --with-jpeg-dir=[DIR] \ 
    --with-gd=[DIR] \ 
    --with-curl=[DIR] \ 
    --with-bz2=[DIR] \ 
    --enable-bcmath 

[DIR] est peut être découvert automatiquement, mais je fait face à beaucoup de situations où ils sont différents de ce que PHP attend.

xmlreader, xmlwriter, simplexml sont activées par défaut à partir de PHP 5.1.2

sqlite3, pdo-sqlite sont activées par défaut à partir de PHP 5.3.0

--enable-gd-native-ttf est obsolète à partir PHP 5.5.0, retiré en PHP 7.2.0.

+0

Juste pour confirmer. quand je lance 'which openssl' il m'indique'/usr/bin/openssl' donc j'ai besoin de mettre à jour le paramètre '--with-openssl-dir =/usr/bin'? –

+0

Correct. S'il y a des erreurs dans les chemins, ne vous inquiétez pas - 'configure' vous en parlera avant de passer du temps pour la compilation. – iXCray

+0

Une autre question: J'ai déjà installé tous les modules PHP requis depuis yum sur mon serveur. J'ai seulement enlevé le PHP et n'ai enlevé aucun module. Donc, lors de la compilation/installation, puis-je dire à PHP d'utiliser tous les modules déjà installés à partir de yum? –

1

Vous devez reconfigurer le processus de construction PHP. Au lieu d'utiliser la configuration par défaut dans le logiciel obtenu par yum, vous devez indiquer à votre système d'utiliser une version spécifique du SSL lors de la compilation.

Si vous avez installé la dernière version d'OpenSSL, vous pouvez aller à votre code source PHP et configurer le bulding avant de compiler le PHP.

./configure --with-openssl --with-openssl-dir=/usr/local/bin