1

私は膨大な量の php 作業を行っておらず、これまで bcompiler を使用したことがありませんが、php サイトを新しいサーバーに移行していますが、これを機能させることができません。

bcompiler 'class.viewimage.php' でコンパイルされたクラスがあるようです - これには bz 圧縮コード 'BZh91AY&SY;iu...' が含まれています。

次に、このクラスを呼び出す通常の php ファイルがあります。

require('class.viewimage.php');
$my_image = NEW ViewImage ($MEDIALIB->Filestore);

このコードを実行すると、コンパイルされたクラスのテキスト コンテンツがブラウザに出力されます ('BZh91AY&SY;iu...')。これを引き起こしているのはrequire行です。php は、これがコンパイルされたコードであることを魔法のように認識していないように思えます。

私の知る限りでは、システムに Bcompiler をインストールしました。これは、このコードがクラッシュしなくなったためです (そして、最初に移行を行ったときにクラッシュしていました)。

if (!extension_loaded('bcompiler')) {
    $prefix = (PHP_SHLIB_SUFFIX === 'dll') ? 'php_' : '';
    dl($prefix . 'bcompiler.' . PHP_SHLIB_SUFFIX);
}

どんな助けでも感謝します。

4

3 に答える 3

2

PHP bcompiler で私自身の問題が発生しましたが、bcompiler モジュールがインストールされ有効になっているマシンでコンパイル済みコード (を使用してコンパイル) を使用しinclude()たり、アクセスしたりすることは機能するはずです。require()bcompiler_write_file()

http://us2.php.net/manual/en/function.bcompiler-read.php :

ノート:

include または require ステートメントを使用してバイトコードを解析してください。これは、この関数を使用するよりも移植性が高く便利な方法です。

多数のバグがあるだけでなく、バ​​ージョン間で互換性がありません。これがあなたの問題だと思います。

たとえば、私の 2 つの (互換性のない) マシン:

CentOS 5.5, PHP 5.2.10, Apache 2.2.3, x86_64
----
bcompiler version   0.9.3-devs
current bytecode version    0.21
can parse bytecode version  0.7, 0.9, 0.11, 0.12, 0.14, 
0.18, 0.21

Mac OS X 10.6, PHP 5.3.3, Apache 2.2.15, i386
----
bcompiler version   0.9.3-devs
current bytecode version    0.22
can parse bytecode version  0.20, 0.22

PECL パッケージにバグとして提出しました。

于 2011-01-26T19:55:52.957 に答える
0

<?PHP は、すべての require/include ファイルをプレーン テキストと見なし、ストリーム内の(ショートタグ)、<?php(通常のタグ)、または(ASP タグ)のいずれかの文字シーケンスを検出するまで、それらをプレーン テキストとして扱います<%。その後、PHP モードに切り替えます。 、スクリプトの終わりまたは対応する終了タグ ( ?>%>) に到達するまで。そのため、コンパイル済みの入力をプログラム コードとして PHP に処理させる方法はありません。EVAL でさえ役に立ちません。なぜなら、そもそもバイナリ入力をトリガーしなかったのと同じパーサーを呼び出すだけだからです。

自動抽出スタブによってラップされていない限り、BZip 圧縮されたコード自体も実行可能ではありません。

BZip されているように見えるので、ファイルを un-bzip して、何が得られるか見てみませんか? クラス ファイルが .bz2 ディストリビューションとしてダウンロードされ、単に名前が変更された可能性があります。圧縮されていないコピーには、実行を許可する適切なラッパーが含まれている場合があります。

于 2010-06-28T21:12:49.173 に答える
0

私は長い間 bcompiler を扱うのに苦労してきましたが、驚くべきことに、ワンクリックで Web サイト全体をコンパイルできる非常に簡単な解決策を見つけました。次の手順に従うことができます:-

  1. Wampserver (任意のエディション) をダウンロードしてインストールします。

  2. Wampserver PHP アドオン バージョン php 5.2.5 をダウンロードしてインストールします

  3. タスクバーから Wampserver -> PHP -> Version -> 5.2.5 をクリックします (現在のバージョンの php が 5.2.5 に変更されます)。

  4. Wampserver -> PHP -> extension -> php_bcompiler を選択します (コンピューターで bcompiler が有効になります)。

    独自のスクリプトをコンパイルできる場合は上記の手順で十分ですが、簡単にするために次の手順に進むことができます。

  5. bcompile GUIをダウンロードします。

  6. Bcompiler GUI でフォルダを選択すると、ワンクリックで Web サイト全体がコンパイルされます。

PHPを楽しむ | オープンソースを楽しむ

于 2012-04-26T05:13:31.543 に答える