Using a php://memory wrapper causes errors...

Posted by HorusKol on Stack Overflow See other posts from Stack Overflow or by HorusKol
Published on 2010-06-07T05:31:51Z Indexed on 2010/06/07 5:52 UTC
Read the original article Hit count: 300

Filed under:
|
|

I'm trying to extend the PHP mailer class from Worx by adding a method which allows me to add attachments using string data rather than path to the file.

I came up with something like this:

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);
}

However, all I get is a PHP warning:

PHP Warning:  fopen() [<a href='function.fopen'>function.fopen</a>]: Invalid php:// URL specified

There aren't any decent examples with the original documentation, but I've found a couple around the internet (including one here on SO), and my usage appears correct according to them.

Has anyone had any success with using this?

My alternative is to create a temporary file and clean up - but that will mean having to write to disc, and this function will be used as part of a large batch process and I want to avoid slow disc operations (old server) where possible. This is only a short file but has different information for each person the script emails.

© Stack Overflow or respective owner

Related posts about php

Related posts about php5