Ich arbeite an einem Upgrade meiner VM auf PHP7 und bin auf einige Probleme gestoßen, beispielsweise: PHP-Warnung: PHP-Start: Dynamische Bibliothek „/usr/lib64/php/modules/pdo.so“ kann nicht geladen werden – /usr/lib64/php/modules/pdo.so: undefiniertes Symbol: zend_get_executed_scope in Unbekannt in Zeile 0
Ich möchte diese Dateien erneut herunterladen. Wie kann ich das tun?
Arbeite an CentOS 7.
Antwort1
Der Paketmanager für CentOS 7 ist yum. Er verfügt über einen Unterbefehl whatprovides
, mit dem Sie herausfinden können, zu welchem Paket eine Datei gehört. Sie möchten beispielsweise wissen, wie Sie/usr/lib64/php/modules/pdo.so
yum whatprovides /usr/lib64/php/modules/pdo.so
...
php-pdo-5.4.16-42.el7.x86_64 : A database access abstraction module for PHP applications
Repo : base
Matched from:
Filename : /usr/lib64/php/modules/pdo.so
php-pdo-5.4.16-43.el7_4.x86_64 : A database access abstraction module for PHP applications
Repo : updates
Matched from:
Filename : /usr/lib64/php/modules/pdo.so
Auf meinem CentOS 7-System würde ich also
yum install php-pdo
Bei Bedarf ausspülen und wiederholen.
Antwort2
Sie müssen alle installierten PHP-Pakete neu installieren (normalerweise ist es „php-*“). Für jede Konfigurationsdatei, die sich im RPM von Ihrer unterscheidet, erstellt RPM eine „.rpmnew“-Datei und gibt eine Warnung aus, wenn die Transaktion zur erneuten Installation des Pakets ausgeführt wird. Sie können diese Dateien manuell verwenden, um Ihre beschädigten zu ersetzen (oder sogar ein Diff-Tool verwenden, um herauszufinden, was Sie möchten und was nicht).
Als Randbemerkung: Seien Sie vorsichtig, wenn Sie benutzerdefinierte INI-Dateien in /etc/php.d/ haben. Yum gibt diesbezüglich keine Warnung aus. Sie können diesen Ordner entfernen/umbenennen, bevor Sie die Neuinstallation ausführen.