我用以下代码创建了我的第一个phar归档文件:
$phar = new Phar('myphar.phar');
$phar->addFile("index.php");
$phar->setStub($phar->createDefaultStub('index.php', 'index.php'));前面提到的index.php只执行一次输出:
echo "I am in a PHP archive!";当我运行上面的代码时,会创建myphar.phar,当我在cli中运行时,输出是"I am in a PHP archive!“。但是,当我从when浏览器调用myphar.phar时,它会打印一些奇怪的字符,比如????�???�?,而不是我的index.php内容,并且没有错误。
我在我的apache httpd.conf中添加了下面这行代码来支持phar归档:
AddType application/x-httpd-php .phar有没有人知道为什么它在cli上工作,而不是在浏览器上工作?
发布于 2010-06-25 16:05:18
这个问题的答案在于
detect_unicode您的php.ini中的设置。
当前PHP (http://bugs.php.net/bug.php?id=42396)中存在一个错误,如果启用了detect_unicode,则会导致__halt_compiler()无法正常工作。
因此,作为临时解决方法,请设置
detect_unicode = Off在你的php.ini里。你必须付出的代价是不能使用unicode字符作为变量、函数和类的名称(它们仍然可以在注释和字符串中使用)
发布于 2009-10-16 19:59:25
你有没有试过查看网页的源代码?也许你在修改httpd.conf之后忘记了重启Apache。
发布于 2009-10-16 12:23:17
我对phar文件的理解是,你应该在你的php脚本中打开(Fopen)文件,你将被calling....if,你会得到那些字符,这意味着apache正在以二进制格式发送文件给你。
如果您将这个"AddType应用程序/x-gzip .gz .tgz .phar“添加到apache配置中,它将使该文件像任何其他归档文件一样可下载,并且不会像php脚本那样执行它。
https://stackoverflow.com/questions/1577479
复制相似问题