이 시도 :
passthru('ls "I\'m a directory"');
,691 그래서 당신이 정말로 원하는 것은이 중 하나입니다
ls I'm\ a\ directory
ls I\'m\ a\ directory
ls I\'m\ a\ directory
ls I\\'m\ a\ directory
:에
echo 'ls I\'m\ a\ directory';
echo "\n";
echo "ls I\'m\ a\ directory"; //Note double quotes
echo "\n";
echo 'ls I\\\'m\\ a\\ directory';
echo "\n";
echo "ls I\\\'m\\ a\\ directory"; //Note double quotes
결과 :
는 이러한 비교
exec()는 출력 결과의 마지막 줄을 반환합니다. 이는 예상 한 것과 다를 수 있습니다. 이에 비교 :
exec('ls "I\'m a directory"', $outvar);
print_r($outvar);
을 내가 모두가 잘 매뉴얼을 읽고 생각하지만, 여기에 그냥 경우입니다 : FreeBSD의에 http://us1.php.net/manual/en/function.exec.php
예 개념 증명 세션 :
501:~$ mkdir "I'm a directory"
502:~$ ls -lrt
drwxr-xr-x 2 cxj cxj 512 Jul 2 19:32 I'm a directory
drwxr-xr-x 33 cxj cxj 2048 Jul 2 19:32 .
503:~$ cd I\'m\ a\ directory/
504:~/I'm a directory$ touch foo bar baz
505:~/I'm a directory$ cd ..
506:~$ cat - > test.php
<?php passthru('ls "I\'m a directory"'); ?>
507:~$ cat test.php
<?php passthru('ls "I\'m a directory"'); ?>
508:~$ php test.php
bar
baz
foo
출처
2013-07-03 00:16:50
CXJ
작은 따옴표 대신 큰 따옴표를 사용하십시오. – Zzz
여전히 작동하지 않습니다 : ( –
[PHP exec() 및 공백이있는 경로] 중복 될 수 있습니다. (http://stackoverflow.com/questions/5489613/php-exec-and-spaces-in-paths) –