php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #7380 the function passthru is bad!!!!!!!!
Submitted: 2000-10-21 01:41 UTC Modified: 2000-10-24 03:52 UTC
From: jorge at e-nexus dot com dot mx Assigned:
Status: Closed Package: Output Control
PHP Version: 4.0.3pl1 OS: Linux Red Hat 6.2
Private report: No CVE-ID: None
View Add Comment Developer Edit
Anyone can comment on a bug. Have a simpler test case? Does it work for you on a different platform? Let us know!
Just going to say 'Me too!'? Don't clutter the database with that please !
Your email address:
MUST BE VALID
Solve the problem:
48 + 28 = ?
Subscribe to this entry?

 
 [2000-10-21 01:41 UTC] jorge at e-nexus dot com dot mx
the function don't return anything to the browser, the problem is when i run a program that need to open a file contained a spaces for example

$cmd="cat /home/test/test file.gif";
passthru($cmd);

If you run this script the document is EMPTY
I try the follow comands without results

$cmd="cat \"/home/test/test file.gif\"";
$cmd="cat /home/test/test\ file.gif";

Please help me

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2000-10-21 18:46 UTC] lyric@php.net
This might be a dumb question, but you do know that you can't just "cat foo.gif" in the middle of a HTML file and expect it to produce an inline image, right?

I've got two ideas:

a) unless you change it, the content-type of the results from a php program is "text/html". Try adding 
   Header("Content-type: image/gif");
to the start of your PHP file

b) the webserver hasn't got enough permissions to see the graphic? Try copying it to the same place as your php file, and typing "chmod 444 file.gif" to make it world-readable.

The following code works perfectly for me:

<?php
Header("Content-type: image/gif");
passthru("cat a.gif");
?>

I suppose there's a reason you're using "cat foo.gif" rather than readfile()?

 [2000-10-22 22:09 UTC] jorge at e-nexus dot com dot mx
Hi. 

I believe that I don't explain to me well, I want to send an image to the
navigator, my code in php works well if thefile that I want to show doesn't
have any space for example in the name (cat.gif), but if the name of the
image has a space (cat image.gif) the command doesn't make anything. 

Example. 
The following code converts an image using ImageMagic, the result is sent to output standar

This code don't work
<?
Header("Content-type: image/gif");
passthru("convert -scale 100x100 cat image.gif gif:-");
?>

This code work fine
<?
Header("Content-type: image/gif");
passthru("convert -scale 100x100 cat_image.gif gif:-");
?>



 [2000-10-22 22:23 UTC] chrisv@php.net
That's not a problem with the passthru() function- take this scenario:

------------------------------------------
test@test:/home/test$ cat test file.gif
cat: test: No such file or directory
cat: file.gif: No such file or directory
test@test:/home/test$ cat 'test file.gif'
[insert gif file here]
-----------------------------------------

So, in the function --
passthru("convert -scale 100x100 cat image.gif gif:-");

the program convert is receiving the arguments:
  0: convert
  1: -scale
  2: 100x100
  3: cat
  4: image.gif
  5: gif:-

passthru("convert -scale 100x100 'cat image.gif' gif:-");
is most likely what you want.
 [2000-10-22 22:28 UTC] lyric@php.net
Your problem is nothing to do with PHP. If you ran

  cat /home/test/test file.gif

from the command prompt, it wouldn't work either. cat thinks you mean two files : "/home/test/test" and "file.gif"

You need either to escape the space, or put quotes around your filename.

Eg: 
  passthru( 'cat /home/test/test\ file.gif' );
  passthru( 'cat "/home/test/test file.gif"' );

 [2000-10-24 03:52 UTC] joey@php.net
Actually, try 2 slashes to escape the space.

$cmd = "cat foo\\ bar";

For a file named "foo bar"
 
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Sun Nov 29 09:01:24 2020 UTC