首页 / PHP / 使用php://内存包装器会导致错误
使用php://内存包装器会导致错误
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用php://内存包装器会导致错误,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1584字,纯文字阅读大概需要3分钟。
内容图文
![使用php://内存包装器会导致错误](/upload/InfoBanner/zyjiaocheng/963/11ed070315864aba80bf7fdbf57660f1.jpg)
我试图通过添加一个允许我使用字符串数据而不是文件路径添加附件的方法来扩展来自Worx的PHP邮件程序类.
我提出了这样的事情:
public function addAttachmentString($string, $name='', $encoding = 'base64', $type = 'application/octet-stream')
{
$path = 'php://memory/' . md5(microtime());
$file = fopen($path, 'w');
fwrite($file, $string);
fclose($file);
$this->AddAttachment($path, $name, $encoding, $type);
}
但是,我得到的只是一个PHP警告:
PHP Warning: fopen() [<a href='function.fopen'>function.fopen</a>]: Invalid php:// URL specified
原始文档没有任何合适的例子,但我在互联网上发现了一对(包括one here on SO),根据它们,我的用法看起来是正确的.
有没有人使用过这个?
我的另一种方法是创建一个临时文件并清理 – 但这意味着必须写入光盘,并且此函数将用作大批量进程的一部分,我希望尽可能避免慢速光盘操作(旧服务器).这只是一个短文件,但脚本电子邮件的每个人都有不同的信息.
解决方法:
快速查看http://php.net/manual/en/wrappers.php.php和源代码,我看不到对“/”.md5(microtime())的支持;“位.
示例代码:
<?php
print "Trying with md5\n";
$path = 'php://memory/' . md5(microtime());
$file = fopen($path, 'w');
if ($file)
{
fwrite($file, "blah");
fclose($file);
}
print "done - with md5\n";
print "Trying without md5\n";
$path = 'php://memory';
$file = fopen($path, 'w');
if ($file)
{
fwrite($file, "blah");
fclose($file);
}
print "done - no md5\n";
输出:
buzzbee ~$php test.php
Trying with md5
Warning: fopen(): Invalid php:// URL specified in test.php on line 4
Warning: fopen(php://memory/d2a0eef34dff2b8cc40bca14a761a8eb): failed to open stream: operation failed in test.php on line 4
done - with md5
Trying without md5
done - no md5
内容总结
以上是互联网集市为您收集整理的使用php://内存包装器会导致错误全部内容,希望文章能够帮你解决使用php://内存包装器会导致错误所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。