为什么这段代码似乎过早死亡?

时间:2012-12-31 19:01:47

标签: php

我有两个文件 - test.php和demo.php。

test.php的内容:

<?php
// fails if allow_url_include = 0 (which it generally is by default)
if (!defined('INIT_NAMESPACES')) {
    define('INIT_NAMESPACES', true);
    $str = substr_replace(file_get_contents(__FILE__), ' namespace phpseclib;', 5, 0);
    include('data://text/plain;base64,' . base64_encode($str));
    return;
}

class test {
    function zz() { echo 'aaa'; }
}

echo "THIS FAR";
?>

demo.php的内容:

<?php
ini_set('display_errors', 'on');
error_reporting(E_ALL);
include('test.php');

echo "ALL DONE";
?>

运行demo.php会输出THIS FAR但不会全部完成。关于为什么的任何想法?

至于我正在尝试做什么...虽然我不认为这是相关的,但这是一个测试脚本来测试使用命名空间的代码的可行性,但也可以在PHP4上没有它们。但是,让我们不要让这个问题分散我们的注意力。我问的问题不是名称空间或PHP4或类似的东西 - 它是关于为什么没有显示所有完成的。

谢谢..

2 个答案:

答案 0 :(得分:1)

实际上,代码有效。我是一个完整的白痴,并调用test.php而不是demo.php lol:O

答案 1 :(得分:0)

test.php$str = ...行替换为:

$handle = fopen(__FILE__, 'r');
$str = fread($handle, filesize(__FILE__));
fclose($handle);
$str = substr_replace($str, ' namespace phpseclib;', 5, 0);