You are here: Re: 'echo "": No such file or directory" error using "exec" to pipe in PHP script « All PHP « IT news, forums, messages
Re: 'echo "": No such file or directory" error using "exec" to pipe in PHP script

Posted by comp.lang.tcl on 12/01/06 23:16

Bryan Oakley wrote:
> comp.lang.tcl wrote:
> > Bryan Oakley wrote:
> >
> >>comp.lang.tcl wrote:
> >>
> >>>Bryan Oakley wrote:
> >>>
> >>>>Show us *precisely* what you type.
> >>>
> >>>
> >>>set php {<?
> >>> error_reporting(E_ALL & ~E_NOTICE);
> >>> $xml = preg_replace('/(>)[\\n\\r\\\s\\t]+(<)/', '$1$2',
> >>>$argv[1]); /* STRIP OUT WHITESPACE xml_parser_set_option() MIGHT MANGLE
> >>>XML */
> >>> $parser = @xml_parser_create();
> >>> @xml_parse_into_struct($parser, $xml, $xmlArray, $tags);
> >>> @xml_parser_free_parser($parser);
> >>> for ($i = 1; $i < @sizeof($xmlArray) - 1; $i++) \{
> >>> foreach ($xmlArray[$i]['attributes'] as $attr => $val)
> >>> $tclList .= $attr . ' \{' . str_replace('\{', '&#123;',
> >>>str_replace('\}', '&#125;', $val)) . '\} '; /* ESCAPED CURLY BRACES FOR
> >>>TCL LIST */
> >>> \}
> >>> echo trim($tclList);
> >>> ?>}
> >>>
> >>> global valPHPPath
> >>> if {![info exists valPHPPath]} {
> >>> if {![array exists env]} { global env }
> >>> source cgi_globals.tcl
> >>> global valPHPPath
> >>> }
> >>> set contentsList [exec $valPHPPath << $php]
> >>>
> >>>
> >>>-----------
> >>>There you go, exactly what I typed
> >>>-----------
> >>>
> >>>This is the error I get:
> >>>
> >>>Status: 404 X-Powered-By: PHP/4.4.4 Content-type: text/html No input
> >>>file specified. child process exited abnormally while executing "exec
> >>>$valPHPPath -q << $php" (procedure "XML_GET_ALL_ELEMENT_ATTRS" line 37)
> >>
> >>Strip out all the Tcl. All of it. Every last byte. Put the php into a
> >>file. Then, from a command line type "php /your/file.php"
> >>
> >>You will get the exact same error. The bug is in php, of which I know
> >>nothing about. What I do know is that the problem isn't Tcl.
> >
> >
> > No, sorry I get no error whatsoever, in fact, I get nothing.
>
> You are correct. My bad. I was getting this, which is the same error
> you were earlier reporting:
>
> Warning: Unexpected character in input: '\' (ASCII=92) state=1 in
> /private/tmp/error.php on line 9
>
> Warning: Unexpected character in input: '\' (ASCII=92) state=1 in
> /private/tmp/error.php on line 14
>
> ... but that was because the php had two lines with extra backslashes,
> that were in to escape the curly braces due to the fact it was defined
> in Tcl. My mistake. When I took those out in the file-based version of
> the php code, it all worked fine (and by that I mean, I get no php errors).
>
> > It's not
> > a PHP syntax or evaluation error, it's just that apparently it seems
> > $argv does not exist because it was never set with any values,
>
> That's likely also true. Unless you give it a filename as an argument
> you won't have a argv[1].

Ok an update:

My TCL code has been simplified to this:

set contents {<?xml version="1.0" encoding="utf-8" ?><blah><foo
id="1"></foo></blah>}
if {[catch [exec $valPHPPath -q /home/ppowell/web/blah.php <<
$contents] errMsg]} {
puts "!!error in exec: $errMsg!!"
} else {
puts "This is your list!"


Where I put all of the contents of [set php] into "blah.php" and
calling that instead.

Well, to no avail:

Status: 404 X-Powered-By: PHP/4.4.4 Content-type: text/html No input
file specified. child process exited abnormally while executing "exec
$valPHPPath -q /home/ppowell/web/blah.php << $contents" (procedure
"XML_GET_ALL_ELEMENT_ATTRS" line 39)

When I call it via command-line:

php -q /home/ppowell/web/blah.php << '<?xml version="1.0"
encoding="utf-8" ?><blah><foo id="1"></foo></blah>'

This happens:

/users/ppowell -->php -q /home/ppowell/web/blah.php << '<?xml
version="1.0" encoding="utf-8" ?><blah><foo id="1"></foo></blah>'
>
[and it just sits there for input until I hit CTRL-C]



>
> > so
> > putting it into a PHP file is ultimately meaningless because I can't
> > get the XML contents into the PHP file even if it were separate.
>
> The exercise of putting it in a file is just to illustrate that the php
> has errors in it, it has nothing to do with Tcl. If you can create a
> working block of php you can call from the command line, you can
> certainly execute it from tcl using the "exec php << $php" trick.
> working PHP and execute it via Tcl. No sense fighting two battles at once.

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация