Re: [PHP] Using named Pipes between PHP and ZIP

2012-07-09 Thread Dennis Heck


Unfortunately it makes no difference if i use zip with 2 - or if I leave 
them ommited. The longer I guess about it, the more I think it might be a 
ZIP topic, namely how the stream to stdin needs to be like so zip will know 
the name of the file from it.


Regards,
Dennis 



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Using named Pipes between PHP and ZIP

2012-07-09 Thread Matijn Woudt
On Mon, Jul 9, 2012 at 7:19 PM, Dennis Heck n...@dennisheck.de wrote:

 Unfortunately it makes no difference if i use zip with 2 - or if I leave
 them ommited. The longer I guess about it, the more I think it might be a
 ZIP topic, namely how the stream to stdin needs to be like so zip will know
 the name of the file from it.


 Regards,
 Dennis

This is a known problem with zip, it's just not possible. Either you
select files, or you pass something on stdin (which will have no
filename). You will have to do the same trick with mkfifo, but you can
use the php function posix_mkfifo[1] for that.

- Matijn

[1] php.net/posix_mkfifo

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Using named Pipes between PHP and ZIP

2012-07-08 Thread Dennis Heck

Hello everyone,

I'm looking for a solution for the following:
1) collecting data from a simple html form and send them to a php script
2) take the data and place them in a php-generated excel sheet
3) zip the excel sheet and password protect the zip file (standard 
encription will be sufficent, no AES needed)

4) send the zip file as an email attachment
This kind of output is fixed, changing the output is not an option.

I'm ok with building the excel sheet and sending the mail, but I'm still 
trying and error with the zip. Since I need password protection in the zip, 
I cannot use the php build in zip extension. I guess I will need to call ZIP 
on the shell. I'm aware I could first save the generated excel sheet to the 
filesystem and afterwards call the zip process on the file, putting the zip 
file also to the file system. But I wonder if there's an option to stream 
the data till they finally can be put to the multipart mail - without saving 
anything to the filesystem.


Here is my first try, just a little modification of the example on proc_open 
in the php docu. To keep the test simple, I load a sample xls from the 
filesystem instead of generating from the php class and output it directly 
to the browser. The script works well except one point: the file contained 
in the zip will have no name an no file extension.


   ?php
   header ('Content-type: application/zip');
   header ('Content-Disposition: attachment; filename=download.zip');

   $descriptorspec = array(
   0 = array(pipe, r),
  1 = array(pipe, w),
  2 = array(file, error-output.txt, a)
   );

   $dateiname = 'xyz.xls';
   $file = fread(fopen($dateiname, r), filesize($dateiname));

   $process = proc_open('zip -P 1234', $descriptorspec, $pipes);

   if (is_resource($process)) {

   fwrite($pipes[0], $file);
   fclose($pipes[0]);

   $zip = stream_get_contents($pipes[1]);
   fclose($pipes[1]);

   $return_value = proc_close($process);
   }

   echo $zip;
   ?

So I look for an option to get the name and extension in the zipfile. Here I 
found named pipes as an option. Calling via shell, tested with a textfile in 
order to use less


   mkfifo xyz.txt
   less readme.txt  xyz.txt  zip output.zip -FI xyz.txt -P 1234
   rm xyz.txt

Now I get a pw protected zip file containing xyz.txt. Now how can I combine 
both? How can I tell php to use the named pipe instead of stdin in 
proc_open? Or any other idea to get the file in the zip the correct name and 
extension.


Thanks in advance,
Regards,
Dennis



--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



Re: [PHP] Using named Pipes between PHP and ZIP

2012-07-08 Thread tamouse mailing lists
≈On Sun, Jul 8, 2012 at 11:30 AM, Dennis Heck n...@dennisheck.de wrote:
 Hello everyone,

 I'm looking for a solution for the following:
 1) collecting data from a simple html form and send them to a php script
 2) take the data and place them in a php-generated excel sheet
 3) zip the excel sheet and password protect the zip file (standard
 encription will be sufficent, no AES needed)
 4) send the zip file as an email attachment
 This kind of output is fixed, changing the output is not an option.

 I'm ok with building the excel sheet and sending the mail, but I'm still
 trying and error with the zip. Since I need password protection in the zip,
 I cannot use the php build in zip extension. I guess I will need to call ZIP
 on the shell. I'm aware I could first save the generated excel sheet to the
 filesystem and afterwards call the zip process on the file, putting the zip
 file also to the file system. But I wonder if there's an option to stream
 the data till they finally can be put to the multipart mail - without saving
 anything to the filesystem.

 Here is my first try, just a little modification of the example on proc_open
 in the php docu. To keep the test simple, I load a sample xls from the
 filesystem instead of generating from the php class and output it directly
 to the browser. The script works well except one point: the file contained
 in the zip will have no name an no file extension.

?php
header ('Content-type: application/zip');
header ('Content-Disposition: attachment; filename=download.zip');

$descriptorspec = array(
0 = array(pipe, r),
   1 = array(pipe, w),
   2 = array(file, error-output.txt, a)
);

$dateiname = 'xyz.xls';
$file = fread(fopen($dateiname, r), filesize($dateiname));

$process = proc_open('zip -P 1234', $descriptorspec, $pipes);

if (is_resource($process)) {

fwrite($pipes[0], $file);
fclose($pipes[0]);

$zip = stream_get_contents($pipes[1]);
fclose($pipes[1]);

$return_value = proc_close($process);
}

echo $zip;
?

 So I look for an option to get the name and extension in the zipfile. Here I
 found named pipes as an option. Calling via shell, tested with a textfile in
 order to use less

mkfifo xyz.txt
less readme.txt  xyz.txt  zip output.zip -FI xyz.txt -P 1234
rm xyz.txt

 Now I get a pw protected zip file containing xyz.txt. Now how can I combine
 both? How can I tell php to use the named pipe instead of stdin in
 proc_open? Or any other idea to get the file in the zip the correct name and
 extension.

 Thanks in advance,
 Regards,
 Dennis



 --
 PHP General Mailing List (http://www.php.net/)
 To unsubscribe, visit: http://www.php.net/unsub.php


I *think* all you need in the first paramter to proc_open is :

zip -P password - -

The first - is the zip file -- which will be send to stdout.
The second - is the input -- which you should pipe your spreadsheet into.

Good luck!

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[PHP] Using Named Pipes

2002-05-30 Thread Jonathan Rosenberg

I'm trying to use a named pipe in PHP, but I have a feeling I'm
misunderstanding something.  I'm hoping someone might have some
insight.  Here's the basic outline of what I'm doing

posix_mkfifo($argfile, 0600)
$argp = fopen($argfile, w+);
$command = program $argfile;
$fp = popen($command, r);
fputs($argp, 'data = ' . $post);
$response = fgetcsv($fp, 1000);

The named pipe is being created ok.  But my page hangs while
trying to read the response in the last line.  Everything works
fine if I replace the named pipe with a standard file.  So it
really seems that it is the use of the named pipe that is wedging
me.

Any thoughts?

--
JR


-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php