【问题标题】:How to use bcompiler and __FILE__ magic constant如何使用 bcompiler 和 __FILE__ 魔法常数
【发布时间】:2011-03-21 11:25:36
【问题描述】:

我正在尝试将 PHP 应用程序的一些位编译成字节码。该代码使用了魔术常量 __FILE__。

infile.php:

<?php
echo dirname(__FILE__);

squish.php:

<?php
$h = fopen('/tmp/pants/outfile.php', 'w');
bcompiler_write_header($h);
bcompiler_write_file($h, '/tmp/trousers/infile.php');
bcompiler_write_footer($h);
fclose($h);

test.php:

<?php
require('/tmp/pants/outfile.php');

运行test.php的输出是/tmp/trousers而不是/tmp/pants。我猜这是因为字节码编译阶段在将字节码写入输出文件之前将魔术常量转换为它们各自的值,但这严重限制了我将魔术常量用于任何有用的能力,如果它们总是与位置相关联输入文件。

还有其他方法可以检索当前源文件的名称吗?是否有任何其他技术可以减轻对 __FILE__ 的需求,但仍允许我引用相对于给定源文件的路径?

【问题讨论】:

    标签: php encoder bcompiler


    【解决方案1】:

    您看到的问题是已经修复的错误,请参阅http://pecl.php.net/bugs/bug.php?id=5693

    【讨论】:

    • 感谢您的提醒。从那以后,我已经彻底放弃了 bcompiler,因为我根本无法让它在 Ubuntu 10.04 或 10.10 上使用一组相当简单的 PHP 类以及最新的 PECL beta 或最新的 SVN 工作。对于扩展其他类的类,它一直给我方法未找到错误。
    猜你喜欢
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 2019-03-04
    • 1970-01-01
    • 2021-12-27
    • 1970-01-01
    • 2016-04-09
    • 2015-10-17
    相关资源
    最近更新 更多