使用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 ...')。这是导致此的需求行。在我看来,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()
)在具有安装和启用的Bompiler模块的机器上应起作用。
http://us2.php.net/manual/en/function.bcompiler-read.php:
笔记:
请使用包含或需要语句来解析字节码,它比使用此功能更便宜,更方便。
不仅有许多错误,而且版本彼此不相容,这就是我猜想的问题。
例如,我的两台(不兼容的)机器:
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模式,直到登录脚本或相应的关闭标签(?>
, %>
)。因此,没有办法让PHP将编译的输入视为程序代码。即使是评估也无济于事,因为这只是调用没有触发二进制输入的同一解析器。
除非由自动提取器存根包裹,否则BZPICTED代码本身也无法执行。
既然它似乎是bzz的,为什么不尝试将文件解开并查看您得到的内容呢?也许该类文件被下载为.bz2发行版,并被重命名。未压缩的副本可以包含适当的包装器以允许执行。
自从很长一段时间以来,我一直在与Bcompiler合作,但令人惊讶的是,我找到了一个非常简单的解决方案,您可以单击一键编译整个网站。您可以按照波纹管的步骤: -
下载并安装Wampserver(任何版本)。
下载并安装Wampserver PHP addons版本PHP 5.2.5
单击WampServer-> PHP->版本 - > 5.2.5从任务栏(它将将您当前版本的PHP更改为5.2.5)。
选择WampServer-> php->扩展名 - > php_bcompiler(它将在您的计算机上启用bcompiler)。
如果您可以自己的脚本编译器,那么以上步骤就足够了,但是为了简化脚本,您可以继续下一步。下载 bcompiler gui.
选择Bompiler GUI上的文件夹,这将一键单击地编译您的整个网站。
享受php |享受开源