2010-06-28 92 views
1

我不做大量的PHP工作,我从来没有使用过bcompiler,但我正在将一个php网站迁移到一台新的服务器,并且我无法实现这个工作。使用bcompiler编译的php代码不工作

似乎有一类字节码编译“class.viewimage.php”编译 - 它包含BZ压缩码“BZh91AY &SY; IU ......”

有那么正在调用这个类常规PHP文件:

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

当这个代码运行,它只是吐出编译的类的文本内容到浏览器(“BZh91AY &SY; IU ...”)。这是造成这种情况的要求线。在我看来,像php并不奇怪地知道这是编译代码。

要我的系统,因为这代码上安装字节码编译据我所知的是不再崩溃(和它崩溃,当我第一次做迁移):

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

赞赏任何帮助。

回答

2

虽然我在PHP编译器中遇到了自己的麻烦,但是使用include()require()在安装并启用了bcompiler模块的机器上访问编译代码(使用bcompiler_write_file()编译)应该可以工作。

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包的错误。

+1

PHP 5.2和5.3有不同的功能,它们的字节码可能也是如此 - 从我的角度来看,它不是一个bug ... – 2011-01-26 20:26:13

0

PHP考虑所有需要/ include文件是纯文本,并会这样对待他们,直至其察觉要么<?(shorttag),<?php(一般的tag),或在流<%(ASP标签)的字符序列,之后切换到PHP模式,直到到达脚本末尾或相应的结束标记(?>,%>)。因此,PHP无法将编译后的输入视为程序代码。即使是EVAL也无济于事,因为它只是调用同样的解析器,而不是首先触发二进制输入。

BZipped代码本身也不可执行,除非它已被自动提取程序存根包装。

既然它看起来是BZipped,为什么不尝试解压缩文件,看看你得到了什么?也许班级文件是作为.bz2发行版下载的,只是重命名。未压缩的副本可能包含适当的包装以允许执行。

+0

嗨马克,谢谢你的回应。这一切都有道理。我曾尝试解压缩并以此方式导入,但它仍以某种方式编译,因此结果完全相同。 对我来说幸运的是,该课程的创建者已经设法挖掘出原始资源,所以我不必使用压缩资源。 – 2010-06-29 20:28:38

0

我一直在努力与bcompiler一起工作很长时间,但令人惊讶的是,我发现了一个非常简单的解决方案,您可以通过一次单击来编译整个网站。你可以按照下列步骤: -

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

  2. 下载并安装Wampserver PHP扩展中心版本的PHP 5.2.5

  3. 点击Wampserver - > PHP - >版本 - 从任务栏> 5.2.5(它会改变你当前的PHP版本至5.2。 5)。

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

    如果您可以编译自己的脚本,那么以上步骤就足够了,但为了使其更容易,您可以继续执行后续步骤。

  5. 下载bcompiler GUI

  6. 在Bcompiler GUI上选择文件夹,这将通过一次点击编译整个网站。

Enjoy PHP |享受开源

+0

“Enjoy Enjoy Open Source”Funny – anttir 2013-05-17 07:57:56