bcompilerでコンパイルされたphpコードが機能しない
質問
私は大量の 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);
}
助けていただければ幸いです。
解決
私自身も PHP bcompiler で問題を抱えていましたが、 include()
または require()
コンパイルされたコードにアクセスします (次を使用してコンパイルされます)。 bcompiler_write_file()
) bcompiler モジュールがインストールされ有効になっているマシン上では動作するはずです。
http://us2.php.net/manual/en/function.bcompiler-read.php:
注記:
バイトコードを解析するためのステートメントを含めるか要求するステートメントを使用してください。これは、この関数を使用するよりもポータブルで便利な方法です。
多数のバグがあるだけでなく、バージョン間に互換性がありません。それがあなたの問題だと思います。
たとえば、私の 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 パッケージのバグとして提出しました。
他のヒント
PHPは、すべての要求/インクルードファイルがプレーンテキストであることを検討し、それがどちらかを見つけるまでそのように扱います <?
(ショートタグ)、 <?php
(通常のタグ)、または <%
(ASPタグ)ストリーム内の文字シーケンス。その後、スクリプトの終了または対応するクロージングタグにヒットするまで、PHPモードに切り替わります(?>
, %>
)。そのため、コンパイルされた入力をプログラムコードとして扱う方法はありません。評価でさえも役に立ちません。なぜなら、それはそもそもバイナリ入力をトリガーしなかったのと同じパーサーを呼び出すだけだからです。
Bzippedコード自体も実行可能ではありません。自動抽出物スタブでラップされていない限り。
それはbzippedであるように見えるので、ファイルをunbzippingしてみて、何が得られるか見てみませんか?クラスファイルは.BZ2分布としてダウンロードされ、単に名前が変更されたのかもしれません。圧縮されていないコピーには、実行を許可する適切なラッパーが含まれている場合があります。
私はBompilerと長い間仕事をするのに苦労してきましたが、驚くべきことに、ワンクリックでウェブサイト全体をコンパイルできる非常に簡単なソリューションが見つかりました。あなたはベローステップに従うことができます: -
WampServer(任意のエディション)をダウンロードしてインストールします。
WampServer PHPアドオンバージョンPHP 5.2.5をダウンロードしてインストールします
WampServer-> PHP->バージョン - > 5.2.5をタスクバーからクリックします(PHPの現在のバージョンが5.2.5に変更されます)。
wampserver-> php-> extension-> php_bcompilerを選択します(コンピューターでbcompilerが有効になります)。
スクリプトを独自にコンパイラーにできる場合は、上記の手順で十分で十分ですが、簡単にするために次のステップを続けることができます。ダウンロード bcompiler gui.
BCompiler GUIのフォルダーを選択すると、ワンクリックでWebサイト全体をコンパイラにします。
PHPをお楽しみください|オープンソースをお楽しみください