我没有做大量的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合作,但令人惊讶的是,我找到了一个非常简单的解决方案,您可以单击一键编译整个网站。您可以按照波纹管的步骤: -

  1. 下载并安装Wampserver(任何版本)。

  2. 下载并安装Wampserver PHP addons版本PHP 5.2.5

  3. 单击WampServer-> PHP->版本 - > 5.2.5从任务栏(它将将您当前版本的PHP更改为5.2.5)。

  4. 选择WampServer-> php->扩展名 - > php_bcompiler(它将在您的计算机上启用bcompiler)。

    如果您可以自己的脚本编译器,那么以上步骤就足够了,但是为了简化脚本,您可以继续下一步。

  5. 下载 bcompiler gui.

  6. 选择Bompiler GUI上的文件夹,这将一键单击地编译您的整个网站。

享受php |享受开源

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top