skip to Main Content

I am running PHP 7.2 on an Apache server on Ubuntu, and I need to add the PHP SoapClient. However, when I try to install it using apt-get, I get the following error:

The following packages have unmet dependencies:
 php7.2-soap : Depends: php7.2-common (= 7.2.24-0ubuntu0.19.04.2) but 7.2.26-1+ubuntu19.04.1+deb.sury.org+1 is to be installed
E: Unable to correct problems, you have held broken packages.

I’ve tried the following before reattempting:

sudo apt-get update
sudo apt-get clean && sudo apt-get update
sudo apt-get upgrade
sudo apt-get upgrade-dist
sudo apt-get -f install
sudo dpkg --configure -a

If it helps, when I run uname -r the output is
5.0.0-37-generic

Thanks in advance!

2

Answers


  1. Chosen as BEST ANSWER

    After a looooong time tackling this issue I finally got my head around it and found a solution :)

    It seems the issue is I was using the ppa:ondrej/apache2 PPA which was installing the latest version of a selection of PHP packages, which at the time of writing is using PHP7.2.27. As far as I can tell, the most up-to-date version of the php7.2-soap package is for php7.2.24, meaning there is an unmet dependency for the php7.2-common package provided by the PPA.

    So, the solution was to remove the PPA and downgrade the PHP packages. Here's a step by step for any poor souls who might encounter a similar issue:

    First, if not already installed, install aptitude sudo apt-get install aptitude

    Next, install ppa-purge:

    mkdir ppa-purge && cd ppa-purge && wget http://mirror.pnl.gov/ubuntu/pool/universe/p/ppa-purge/ppa-purge_0.2.8+bzr56_all.deb && wget http://mirror.pnl.gov/ubuntu//pool/main/a/aptitude/aptitude_0.6.6-1ubuntu1_i386.deb && sudo dpkg -i ./*.deb 
    

    (I ran this in my user folder, i.e. ~/

    Then I remove the PPA with the following commands:

    sudo ppa-purge ppa:ondrej/apache2
    sudo add-apt-repository --remove ppa:ondrej/apache2
    sudo apt-get autoclean
    

    Now we need to downgrade the dependencies. First I determined which version I needed. The package that was causing the unmet dependency was php7.2-common, so I ran sudo apt list -a php7.2-common. I chose the version which matched the original error message, in this case, 7.2.24-0ubuntu0.19.04.2.

    So you are able to install a specific version by following the package with a = then a version number. If you, like me, are working on a live server, I'm going to shout this next bit about the next command you will write:

    DO NOT USE THE -y TAG!!

    CHOOSE "NO" WHEN IT ASKS YOU IF YOU WANT TO CONTINUE!!

    If you do any of these, it will automatically remove any dependencies for php7.2-common and the PHP stop working on your site.

    To determine which dependencies we need to update along with php7.2-common, I ran sudo apt-get install php7.2-common=7.2.24-0ubuntu0.19.04.2. It then showed me a list of other packages it would remove as well. I copied these dependencies then chose 'n' to cancel the install.

    Next, I put the copied list into a text editor and used it to create the following script:

    sudo apt-get install php7.2-common=7.2.24-0ubuntu0.19.04.2 
    libapache2-mod-php7.2=7.2.24-0ubuntu0.19.04.2 
    php7.2=7.2.24-0ubuntu0.19.04.2 
    php7.2-bcmath=7.2.24-0ubuntu0.19.04.2 
    php7.2-bz2=7.2.24-0ubuntu0.19.04.2 
    php7.2-cgi=7.2.24-0ubuntu0.19.04.2 
    php7.2-cli=7.2.24-0ubuntu0.19.04.2 
    php7.2-curl=7.2.24-0ubuntu0.19.04.2 
    php7.2-dev=7.2.24-0ubuntu0.19.04.2 
    php7.2-enchant=7.2.24-0ubuntu0.19.04.2 
    php7.2-fpm=7.2.24-0ubuntu0.19.04.2 
    php7.2-gd=7.2.24-0ubuntu0.19.04.2 
    php7.2-imap=7.2.24-0ubuntu0.19.04.2 
    php7.2-intl=7.2.24-0ubuntu0.19.04.2 
    php7.2-json=7.2.24-0ubuntu0.19.04.2 
    php7.2-ldap=7.2.24-0ubuntu0.19.04.2 
    php7.2-mbstring=7.2.24-0ubuntu0.19.04.2 
    php7.2-mysql=7.2.24-0ubuntu0.19.04.2 
    php7.2-odbc=7.2.24-0ubuntu0.19.04.2 
    php7.2-opcache=7.2.24-0ubuntu0.19.04.2 
    php7.2-pspell=7.2.24-0ubuntu0.19.04.2 
    php7.2-readline=7.2.24-0ubuntu0.19.04.2 
    php7.2-tidy=7.2.24-0ubuntu0.19.04.2 
    php7.2-xml=7.2.24-0ubuntu0.19.04.2 
    php7.2-xmlrpc=7.2.24-0ubuntu0.19.04.2 
    php7.2-zip=7.2.24-0ubuntu0.19.04.2
    

    Finally, I ran this command. Instead of warning me about removing the packages, it warned me that these packages would be "downgraded", which is fine. I pressed Y and it reinstalled all the packages and viola! I was then able to install php7.2-soap :)

    See these links which I credit to finding a solution for this:


  2. I have a similar issue one month ago with a Debian 9 and PHP 7 Did you consider to upgrade your PHP to the latest stable version before installing the PHP Client ?

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search