Використання Phar-архівів: Вступ

Концептуально Phar-архіви аналогічні JAR-архівам Java, але враховують потреби та гнучкість PHP-додатків. Phar-архів використовується для поширення закінченого PHP-програми або бібліотеки у вигляді одного файлу. Додаток, що має вигляд Phar-архіву, використовується в точності так само, як і будь-який інший PHP-додаток:

php coolapplication.phar

Використання бібліотеки, що має вигляд Phar-архіву, ідентичне використанню будь-якої іншої PHP-бібліотеки:

Loading...

Обгортка потоку phar є основою модуля phar, для її використання докладно написано тут. Обгортка потоку phar надає доступ до файлів усередині phar-архіву з використанням стандартних файлових функцій PHP: fopen() opendir() та інших, які працюють із звичайними файлами. Обгортка потоку phar підтримує всі операції читання/запису як над файлами, і над каталогами.

Loading...

КлассPhar реалізує розширені можливості доступу до файлів і створення phar-архівів. Використання класу Phar докладно описано тут

Loading...

Крім того, перевірка вмісту phar-файлу може бути здійснена за допомогою будь-якого з підтримуваних симетричних алгоритмів хешування (MD5, SHA1, SHA256 та SHA512, якщо ext/hash включений), а також за допомогою підписування асиметричними відкритим/закритим ключами, використовуючи OpenSSL. Для того щоб використовувати підписування OpenSSL, вам необхідно згенерувати пару з відкритого та закритого ключів та встановити закритий ключ для підписування, використовуючи Phar::setSignatureAlgorithm(). Крім того, відкритий ключ, витягнутий за допомогою цього коду:

Loading...

повинен бути збережений поруч із phar-архівом, для перевірки якого він використовується. Якщо phar-архів збережений як /шлях/до/моєму/архіву/my.phar, то відкритий ключ повинен бути збережений як /шлях/до/моєму/архіву/my.phar.pubkey, інакше phar не зможе перевірити справжність підпису OpenSSL.

КлассPhar також надає 3 статичні методи: Phar::webPhar() Phar::mungServer() і Phar::interceptFileFuncs(), які мають вирішальне значення для упаковки PHP-додатків, призначених для використання на звичайних файлових системах та для веб-додатків . Phar::webPhar() реалізує фронтальний контролер, який направляє HTTP-дзвінки у правильне місце всередині phar-архіву . Phar::mungServer() використовується для зміни значень масиву $_SERVERщо дозволяє обдурити додатки, що обробляють ці значення . Phar::interceptFileFuncs() інструктує Phar про необхідність перехоплення дзвінків fopen() file_get_contents() opendir() та інших функцій, заснованих на stat (file_exists() is_readable() і так далі) і перенаправлення всіх відносних шляхів усередину phar-архіву.

Наприклад, для упаковки випуску популярної програми phpMyAdmin для його використання як phar-архів, потрібен тільки цей простий скрипт, а phpMyAdmin.phar.tar.php буде доступний як звичайний файл на вашому веб-сервері після зміни значень user/password:

Loading...