pecl installs for previous php version

前端 未结 7 736
心在旅途
心在旅途 2021-01-30 14:40

I\'ve upgraded my MacBook to Mavericks and ruined my development environment. The problem I have right now is that my pear/pecl still tries to install for my previous (5.3) vers

相关标签:
7条回答
  • 2021-01-30 15:04

    Encountered similar problem recently.

    (Debian, PHP 7.3 just installed, was using PHP 7.2)

    If anybody tried the highest voted answer but still not working. Here are the steps to debug:

    • Remove all other php versions, especially the dev package (php7.2-dev in my case)
    • install the dev package for the current version (php7.3-dev)

    And basically that's it.

    Reason:

    PECL requires phpize which is part of php-dev package. If phpize for the current version is not found, if will look for the previous version, which resulting a older PHP API number

    0 讨论(0)
  • 2021-01-30 15:09

    None of the other answers (as yet) seem to address having multiple "co-installable" PHP versions while wanting to build a given extension for all installed PHP versions.

    To illustrate the scenario in which I find myself (I'm using the Ondrej Surý PHP PPAs for Ubuntu 16.04 LTS):

    root@localhost:~# ls -lah /usr/bin/*php*
    -rwxr-xr-x  1 root   root     11K Apr 19 12:50 dh_php
    -rwxr-xr-x  1 root   root    3.1K Apr  5  2016 dh_phpcomposer
    -rwxr-xr-x  1 root   root    5.4K Apr  5  2016 dh_phppear
    lrwxrwxrwx  1 root   root      21 Jul 24 00:44 php -> /etc/alternatives/php
    -rwxr-xr-x  1 root   root    4.3M Jul  6 10:04 php5.6
    -rwxr-xr-x  1 root   root    4.3M Jul  6 10:04 php7.0
    -rwxr-xr-x  1 root   root    4.4M Aug  4 14:22 php7.1
    lrwxrwxrwx  1 root   root      28 Jul 24 00:44 php-config -> /etc/alternatives/php-config
    -rwxr-xr-x  1 root   root    4.3K Jul  6 10:03 php-config5.6
    -rwxr-xr-x  1 root   root    4.1K Jul  6 10:03 php-config7.0
    -rwxr-xr-x  1 root   root    4.1K Aug  4 14:21 php-config7.1
    lrwxrwxrwx  1 root   root      24 Jul 24 00:44 phpize -> /etc/alternatives/phpize
    -rwxr-xr-x  1 root   root    4.7K Jul  6 10:03 phpize5.6
    -rwxr-xr-x  1 root   root    4.6K Jul  6 10:03 phpize7.0
    -rwxr-xr-x  1 root   root    4.6K Aug  4 14:21 phpize7.1
    

    pecl install extension-name does the job for PHP 7.1, but not the others.

    The other anwsers indicate that while it's possible to uninstall/reinstall php*-dev, I'd much rather not, given the intentional, co-installed PHP versions on the system.

    One solution is to build the extension for each version present on the system.

    This snippet demonstrates building with PHP 5.6, but I've done the same for 7.0 and 7.1 and the steps are the same.

    This example demonstrates cloning the extension from a Git repository, but one may use any source directory.

    (# indicates that you must be root or use sudo)

    # apt-get install php-dev
    
    # cd ~
    
    # git clone https://github.com/vendor/extension-name
    
    # cd ./extension-name
    
    # phpize5.6
    
    # ./configure --with-php-config=/usr/bin/php-config5.6
    
    # make clean
    
    # make
    
    # make install
    
    # ln -s /etc/php/5.6/mods-available/extension-name.ini /etc/php/5.6/fpm/conf.d/20-extension-name.ini
    
    # service php5.6-fpm reload
    
    0 讨论(0)
  • 2021-01-30 15:13

    Better to reinstall phpize extensions as it will be used by PECL and not make hacks.

    Do next (php 5.5 => php 5.6 example) :

    sudo apt-get remove php5-dev
    sudo apt-get install php5.6-dev 
    

    (you can change 5.6 to version you need)

    Then:

    sudo pecl install extensionname
    
    0 讨论(0)
  • 2021-01-30 15:15

    There is a way to switch PHP version on Ubuntu:

    sudo update-alternatives --set php /usr/bin/php5.6
    

    and optionally:

    sudo update-alternatives --set phar /usr/bin/phar5.6
    sudo update-alternatives --set phar.phar /usr/bin/phar.phar5.6
    sudo update-alternatives --set phpize /usr/bin/phpize5.6
    sudo update-alternatives --set php-config /usr/bin/php-config5.6
    

    Source: https://superuser.com/a/1100911/371795

    0 讨论(0)
  • 2021-01-30 15:17

    In my case, I was attempting to install Gearman.

    pecl install gearman would install it incorrectly.

    php -i would show:

    PHP Extension => 20100525
    

    Yet pecl would install using:

    PHP Api Version:         20090626
    

    After changing my config settings to use:

    First Fix

    sudo pecl config-set php_ini /etc/php.ini
    sudo pecl config-set php_bin /usr/bin/php5
    

    I noticed that I would still get

    WARNING: php_bin /usr/bin/php5 appears to have a suffix 5, but config variable php_suffix does not match

    You can resolve this by using the config setting:

    Additional Fix

    sudo pear config-set php_suffix 5
    

    Why was this a problem?

    For me, I got into this problem because I added a custom PPA and reinstalled PHP. This meant that my previous install of php5-dev was out of sync.

    You if you ever get into the same situation, you might just want to run..

    apt-get remove php5-dev
    pecl uninstall <extensionname>
    apt-get install php5-dev
    apt-get remove php5-pear
    apt-get install php5-pear
    pecl install <extensionname>
    

    Alternatively, you can download the source and run phpize.

    0 讨论(0)
  • 2021-01-30 15:18

    The solution was pretty simple. I had to make modifications to my pecl config. It turned out that these two command did the trick:

    sudo pear config-set php_ini /etc/php.ini
    sudo pecl config-set bin_dir /usr/bin/
    

    pecl used the wrong phpize. There were two versions of the phpize. The same counts for my php.ini file.

    0 讨论(0)
提交回复
热议问题