不确定这是否可行,但现在已成为一场学术斗争.
使用__halt_compiler()技巧在一个PHP文件中嵌入二进制数据,我已经成功地创建了自开幕脚本将fseek()到__COMPILER_HALT_OFFSET__(不是太难看,因为这精确的例子在手册中进行了说明)
不管怎么说,我已经存储的二进制数据ZIP的小疙瘩(包含一个单一的文件,上面写着"Hello World"的一个文件夹我的电话后)__halt_compiler()
我试图做的是将数据直接复制到php://temp流,并成功完成(如果我rewind()和passthru()临时流句柄,它转储数据)
$php = fopen(__FILE__, 'rb');
$tmp = fopen('php://temp', 'r+b');
fseek($php, __COMPILER_HALT_OFFSET__);
stream_copy_to_stream($php, $tmp);
Run Code Online (Sandbox Code Playgroud)
我的问题带有试图打开现在php://temp1与zip_open()
$zip = zip_open('php://temp');
Run Code Online (Sandbox Code Playgroud)
1从我所看到的(尽管缺乏其他诸如缺乏流支持的可能性
zip_open()),这里的问题是句柄中数据php://memory和php://temp流之间固有的非永久性.如果这可以解决,也许事实上可能.
它不断踢回错误代码11,我发现没有2个文档(看起来像大多数其他可能的错误代码)
var_dump($zip); // int(11)
Run Code Online (Sandbox Code Playgroud)
2正如@cweiske所指出的,错误代码
11 = ZipArchive::ER_OPEN,无法打开文件
这是我尝试使用php://temp流或其他可能问题的结果吗?我也知道存在一种OOP方法(ZipArchive等人),但我想我会从基础开始.
有任何想法吗?
11 是常数ZIPARCHIVE::ER_OPEN,手册中用它来描述
无法打开文件
请注意,手册没有说明可以使用流包装器。
请考虑使用 PHP 的phar扩展 - 它可以满足您的需求,并且经过了良好的测试。
| 归档时间: |
|
| 查看次数: |
2462 次 |
| 最近记录: |