問題タブ [phar]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - PHAR アーカイブを PHP 実行可能ファイルとしてマークする
PHAR アーカイブを PHP としてマークして(これの正しい用語はわかりません)、一部なしで cli から使用できるようにしようとしていphp
ます。そのため、呼び出す代わりに、php /path/to/my/archive.phar ARGUMENTS_HERE
移動してどこからでも/usr/local/bin
呼び出すことができarchive
ます。(PHPUnit や Composer と同じように)。
私が正しければ、それを行うに#!/usr/bin/env php
は、PHAR アーカイブ ファイルの上に追加するだけでよいのでしょうか?
それ、どうやったら出来るの?ビルドスクリプトでcomposer コンパイラを模倣しようとしましたが、 PHP_CLI (セグメンテーション違反)がクラッシュするだけです。
ご覧のとおり、/lib/app.php
ファイルを実行するために必要なのはスタブだけで、それだけです。
コンパイルされた PHAR の先頭に追加
もちろん、私が最初に試したのは手動でアーカイブに追加することでしたが、それは破損しているようです:
手動で変更する前に、まったく同じアーカイブが機能することに注意してください。(ただしphp /path/to/arch
、もちろん必要です)
php - Phar の有無にかかわらずパッケージ化するための互換性のある方法で PHP ファイルを含める方法は?
次の構造を持つ PHP アプリケーションがあるとします。
同じソースベースで同時に次のケースをカバーしようとしています:
- No Phar : DocumentRootがweb/を指し、すべてのリクエストをindex.phpにリダイレクトして、アプリケーションをそのまま使用できること。
- Minimal Phar : web/index.phpのみを含み、 web/application-minimal.pharとして保存されるphar を生成できること。
- Full Phar : libディレクトリとweb/index.phpの両方のコンテンツを含み、web/application-full.pharとして保存されるphar を生成できること。
phar ファイルの場合、すべての要求は phar ファイル自体にリダイレクトされます。
*require_once* を変更せずに、これらすべてのユースケースを達成することは可能ですか?
*web/index.php からlib/mylib.phpをインクルードするために、さまざまなアプローチ (相対/絶対) を試しました。また、 Phar::mount()でいくつかのトリックを試しました。私の試みはどれも成功しませんでした。
php - phar.cache_list ディレクティブでキャッシュされた phar をどのように更新しますか?
phar をcache_listディレクティブに追加するphp.ini
と、キャッシュがうまく機能しました。数日後、phar を更新すると、次のエラーが表示されます。
ディレクティブをコメント アウトするcache_list
と、phar は機能し、問題なくロードされますが、キャッシュできなくなりました。crc32
これは、PHPが古いファイルを見ていると思わせます。
他にキャッシュを「リフレッシュ」する方法がわからない、またはこれが問題であるかどうかはわかりません。
php - PHP ソースから実行可能な phar コマンドを取得するにはどうすればよいですか?
このマンページphar
で説明されているように、(Debian Linux で) コマンド ライン ツールを使用できるようにしたいと考えています。
私がこれまでに行ったこと:
PHP PHAR ソース フォルダーをダウンロードしました。
に移動しました
/usr/share/
。phar.php
from#!/usr/local/bin/php
to#!/usr/bin/php
(PHP シンボリックリンクへのパス -> PHP 実行可能ファイルへのパス)の最初の行を変更しました。へのシンボリックリンクを作成しまし
phar
た/usr/share/phar/phar.php
。
phar help
エラーを返すようになりました:
私は何を間違っていますか?それを機能させる方法は?
どうも
linux - make の実行中にエラーが発生しました: 区切り記号がありません (8 つのスペースではなく TAB を意味していましたか?)
phar
Debian VM に PHP コマンド ライン ツールをインストールしようとしています。
(1) php-src をダウンロードします。/tmp/php/src にあると仮定します。
(2) ディレクトリを /tmp/phar にする
(3)これを /tmp/php-src/ext/phar/Makefile として保存します。
(4) cd /tmp/php-src/ext/phar
(5)走る
sudo make
ステップ5の後、エラーが発生します:
私が知っているように、このエラー メッセージには 2 つの原因が考えられます。
make ファイルのタブ。でファイルをテストしました
od -t c Makefile
。ファイルにはタブが含まれていません (\t
)。これは v3.81 のバグである可能性があり、
make
v3.82 へのパッチまたはアップグレードが必要です (まだ不安定です: "警告: このパッケージは実験的ディストリビューションからのものです。 ")。ダウンロードしてインストール (dpkg -i make_3.82-1_amd64.deb
) しましたが、まだエラーが発生しています。
エラーの原因は何ですか? どうすれば回避できますか?
どうも
php - Zend Framework 2 の ZFTool から Phar を作成できません
ZFTool の Phar アーカイブは、GitHub からダウンロードするか、手動で作成できます。
自分で Phar をコンパイルしようとすると、次のエラーが発生します。
フォルダが見つかりません/lib/ZendFramework/ZFTool/vendor
...
私は何か間違ったことをしていますか?
php - passwordlib 致命的エラー
私はPasswordLibを使用しています。プロジェクトを wamp で実行し、すべて問題ありませんが、ホスティングにアップロードすると、次のエラーが発生しました。
致命的なエラー: メッセージ '__HALT_COMPILER(); で例外 'PharException' がキャッチされませんでした。/data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar:21 スタック トレース: #0 /data/web/virtuals/9784/virtual/www/ subdom/roids/_libs/PasswordLib.phar(21): Phar::mapPhar('PasswordLib.pha...') #1 /data/web/virtuals/9784/virtual/www/subdom/roids/index.php( 7): require_once('/data/web/virtu...') #2 {main} が /data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar の 21 行目にスローされる
致命的なエラー: メッセージ「phar "/data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar" SHA1 署名を検証できませんでした: /data/ の壊れた署名」を含むキャッチされない例外 'PharException' web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar:21 スタック トレース: #0 /data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar(21 ): Phar::mapPhar('PasswordLib.pha...') #1 /data/web/virtuals/9784/virtual/www/subdom/roids/index.php(7): require_once('/data/web/ virtu...') #2 {main} が /data/web/virtuals/9784/virtual/www/subdom/roids/_libs/PasswordLib.phar の 21 行目にスローされる
問題が何であるかについて何か考えはありますか?
ありがとう
php - 単純なアプリケーションの PHAR の生成
Symfony2 コンソール ライブラリを使用して CLI ツールの構築を実験しています。基本的な作業ができたので、それを phar としてパッケージ化したいと考えています。いくつかの例を読みましたが、見たものは非常に単純です (3 つのファイル、名前空間なしなど)。
私のsrc/
ディレクトリには次のものがあります。
上記src/
にはconsole.php
、アプリを実行するために実行する があります。vendors/
コンポーザーを使用して依存関係をインストールしているため、ディレクトリもあります。console.php
非常に簡単です:
console.php
phar のビルドについて (少し) 理解していることから、スタブとして含める必要があるsrc/
と思いますvendors/
。
phpmaster.comのサンプル コードを見ると、すべてのファイルを phar を使用して手動で指定していますfile_get_contents
が、コンポーザーのオートローダーを使用して PSR-0 ディレクトリ構造を維持するには、ディレクトリ構造を維持する必要があります。
.phar を作成し、その中にディレクトリ構造を維持して、composer のオートローダーを引き続き使用できるようにする簡単な方法はありますか?