On Wed, 21 Nov 2001 frodo@xxxxxxxxxxxx wrote:
> KV>> P.S. Вообще дело не только в кривой реализации safe mode, но и вообще в
> KV>> непродуманном API :-(( Я попытался вызвать программу, передав ей в
> KV>> качестве параметра имя файла (пресловутый /.../Program files/.../ :-)
> KV>> Не смог: это дело упорно передавалось как два аргумента - как ни приседай.
> KV>> Посмотрев в исходники я понял, что так, собственно, и должно быть.
>
> А можно немного подробней? Какая функция и что ей конкретно передавалось?
>
Ok. Искуственный пример (чтобы показать проблему).
-- cut --
$ cat show-params
#!/bin/sh
n=1
for i ; do
echo "Parameter $((n++)) is '$i'"
done
$ cat test.php
#!/usr/bin/php -q
<?php
$param="1 2 3";
$result=array();
exec("show-params $param",$result);
echo(implode("\n",$result)),"\n";
$param=escapeshellarg($param);
$result=array();
exec("show-params $param",$result);
echo(implode("\n",$result)),"\n";
?>
-- safe mode is on --
$ test.php
Parameter 1 is '1'
Parameter 2 is '2'
Parameter 3 is '3'
Parameter 1 is ''1'
Parameter 2 is '2'
Parameter 3 is '3''
-- safe mode is off --
Parameter 1 is '1'
Parameter 2 is '2'
Parameter 3 is '3'
Parameter 1 is '1 2 3'
-- cut --
Что видим ? Если не заэкранировать, то не работает ни в каком режиме (что
ожидалось), если заэкранировать, то работает без safe mode и не работает с
safe mode (чего не ожидалось).
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.