Я работаю над обновлением своей виртуальной машины до PHP7 и столкнулся с несколькими проблемами, такими как: PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo.so' - /usr/lib64/php/modules/pdo.so: undefined symbol: zend_get_executed_scope in Unknown on line 0
Я хочу повторно скачать эти файлы. Как это сделать?
Работаю на CentOS 7.
решение1
Менеджер пакетов для CentOS 7 — yum, у него есть подкоманда whatprovides
, с помощью которой можно узнать, к какому пакету принадлежит файл. Например, вы хотите узнать, как переустановить/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
Итак, на моей системе CentOS 7 я бы
yum install php-pdo
Промойте и повторите по мере необходимости.
решение2
Вам нужно переустановить все установленные вами пакеты php (обычно это "php-*"). Для любого файла конфигурации, который отличается в RPM от того, что у вас есть, RPM создаст файл ".rpmnew" и выдаст предупреждение при запуске транзакции повторной установки пакета. Вы можете вручную использовать эти файлы для замены сломанных (или даже использовать инструмент сравнения, чтобы выяснить, что вам нужно, а что нет).
В качестве примечания: будьте осторожны, если у вас есть пользовательские ini-файлы в /etc/php.d/. Yum не выдаст никаких предупреждений о них. Вы можете удалить/переименовать эту папку перед запуском переустановки.