Установка PHPUnit
Требования
PHPUnit 9.5 требует PHP 7.3; использование последней версии PHP настоятельно рекомендуется.
PHPUnit требует расширений dom и json, которые обычно включены по умолчанию.
PHPUnit также требует расширений pcre, reflection и spl. Эти стандартные расширения включены по умолчанию и не могут быть отключены без изменения системы сборки PHP и/или исходных кодов C.
Функция отчета о покрытии кода требует расширений Xdebug (2.7.0 или более поздней версии) и tokenizer. Генерация отчетов в формате XML требует расширения xmlwriter.
Архив PHP (PHAR)
Самый простой способ получить PHPUnit — скачать архив PHP (PHAR), в котором все необходимые (а также некоторые дополнительные) зависимости PHPUnit объединены в один файл.
Для использования архивов PHP (PHAR) требуется расширение phar.
Если расширение Suhosin включено, вам нужно разрешить выполнение PHAR в вашем php.ini:
suhosin.executor.include.whitelist = phar
Файл PHPUnit PHAR можно использовать сразу после скачивания:
$ wget https://phar.phpunit.de/phpunit-9.5.phar $ php phpunit-9.5.phar --version PHPUnit x.y.z by Sebastian Bergmann and contributors.
Рекомендуется сделать PHAR исполняемым:
$ wget https://phar.phpunit.de/phpunit-9.5.phar $ chmod +x phpunit-9.5.phar $ ./phpunit-9.5.phar --version PHPUnit x.y.z by Sebastian Bergmann and contributors.
Проверка выпусков PHPUnit PHAR
Все официальные релизы кода, распространяемые проектом PHPUnit, подписаны менеджером релизов. Подписи PGP и хеши SHA256 доступны для проверки на phar.phpunit.de.
Следующий пример подробно описывает, как работает проверка релиза. Мы начинаем со скачивания phpunit.phar и его отделённой подписи PGP phpunit.phar.asc:
$ wget https://phar.phpunit.de/phpunit-9.5.phar $ wget https://phar.phpunit.de/phpunit-9.5.phar.asc
Мы хотим проверить архив PHP (phpunit-x.y.phar) PHPUnit против его отделённой подписи (phpunit-x.y.phar.asc):
$ gpg phpunit-9.5.phar.asc gpg: Signature made Sat 19 Jul 2014 01:28:02 PM CEST using RSA key ID 6372C20A gpg: Can't check signature: public key not found
У нас нет открытого ключа менеджера релизов (6372C20A) в нашей локальной системе. Для продолжения проверки нам нужно получить открытый ключ менеджера релизов с сервера ключей. Один такой сервер — pgp.uni-mainz.de. Серверы открытых ключей связаны друг с другом, поэтому вы должны иметь возможность подключиться к любому серверу ключей.
$ curl --silent https://sebastian-bergmann.de/gpg.asc | gpg --import
gpg: key 4AA394086372C20A: 452 signatures not checked due to missing keys
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 4AA394086372C20A: public key "Sebastian Bergmann <sb@sebastian-bergmann.de>" imported
gpg: Total number processed: 1
gpg: imported: 1
gpg: no ultimately trusted keys found
Теперь мы получили открытый ключ сущности «Sebastian Bergmann <sb@sebastian-bergmann.de>». Однако у нас нет способа проверить, что этот ключ был создан человеком по имени Sebastian Bergmann. Но давайте попробуем снова проверить подпись релиза.
$ gpg phpunit-9.5.phar.asc gpg: Signature made Sat 19 Jul 2014 01:28:02 PM CEST using RSA key ID 6372C20A gpg: Good signature from "Sebastian Bergmann <sb@sebastian-bergmann.de>" gpg: aka "Sebastian Bergmann <sebastian@php.net>" gpg: aka "Sebastian Bergmann <sebastian@thephp.cc>" gpg: aka "Sebastian Bergmann <sebastian@phpunit.de>" gpg: aka "Sebastian Bergmann <sebastian.bergmann@thephp.cc>" gpg: aka "[jpeg image of size 40635]" gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: D840 6D0D 8294 7747 2937 7831 4AA3 9408 6372 C20A
На этом этапе подпись корректна, но мы не доверяем этому ключу. Хорошая подпись означает, что файл не был изменён. Однако из-за особенностей криптографии с открытым ключом вам необходимо дополнительно проверить, что ключ 6372C20A был создан настоящим Sebastian Bergmann.
Любой злоумышленник может создать открытый ключ и загрузить его на серверы открытых ключей. Затем он может создать вредоносный релиз, подписанный этим поддельным ключом. Если вы попытаетесь проверить подпись этого повреждённого релиза, это удастся, потому что ключ не является «настоящим». Поэтому вам необходимо проверить подлинность этого ключа. Проверка подлинности открытого ключа, однако, выходит за рамки этой документации.
Ручная проверка подлинности и целостности PHAR PHPUnit с помощью GPG утомительна. Вот почему был создан PHIVE, среда установки и проверки PHAR. Вы можете узнать о PHIVE на его сайте.
Composer
Добавьте (временную для разработки) зависимость от phpunit/phpunit в файл composer.json вашего проекта, если вы используете Composer для управления зависимостями вашего проекта:
composer require --dev phpunit/phpunit ^9.5
Глобальная установка
Обратите внимание, что установка PHPUnit глобально не рекомендуется, так как /usr/bin/phpunit или /usr/local/bin/phpunit, например.
Вместо этого PHPUnit следует управлять как локальной зависимостью проекта.
Либо поместите PHAR необходимой версии PHPUnit в директорию tools вашего проекта (которая должна управляться PHIVE), либо сделайте зависимость от нужной версии PHPUnit в composer.json вашего проекта, если используете Composer.
Веб-сервер
PHPUnit — это фреймворк для написания и командная утилита для запуска тестов. Написание и запуск тестов — это деятельность во время разработки. Нет причин, по которым PHPUnit должен быть установлен на веб-сервере.
Если вы загружаете PHPUnit на веб-сервер, ваш процесс развертывания нарушен. В более общем плане, если директория vendor доступна для публичного доступа на вашем веб-сервере, ваш процесс развертывания также нарушен.
Обратите внимание, что загрузка PHPUnit на веб-сервер может привести к нежелательным последствиям. Предупреждение.
© 2005–2020 Sebastian Bergmann
Licensed under the Creative Commons Attribution 3.0 Unported License.
https://phpunit.readthedocs.io/en/9.5/installation.html