PHP Yol sorunu çalışan backticks / exec ()

5 Cevap java

Ben komut satırından java jar dosyasını çalıştırmak için çalışıyorum ve yürütme içinde bir yol verir. Bu yolun Withing alanlarda ve bu soruna neden olduğunu kendi vardır.

yani

foreach($paths as $path):
$f = `java -jar /OCR/ocr.jar /Folder/$path /ocr/output.txt`;
echo "<pre>$output</pre>";
endforeach;

Eğer görebiliyorsanız Alt Klasör ismi arasındaki boşluk sorunu neden olur.

Komut satırı ile bu (çalışıyor) olacaktır

java -jar /OCR/ocr.jar /Folder/Sub\ Folder/filetoocr.pdf /ocr/output.txt

herhangi bir öneri bunu nasıl çözebilirsiniz?

Eğer tavsiyelerde Umut

5 Cevap

Kullan escapeshellarg():

escapeshellarg() adds single quotes around a string and quotes/escapes any existing single quotes allowing you to pass a string directly to a shell function and having it be treated as a single safe argument.

ve belki escapeshellcmd()

$cmd = sprintf(
  'java -jar %s %s %s',
  escapeshellarg('/OCR/ocr.jar'),
  escapeshellarg('/Folder/Sub Folder/filetoocr.pdf'),
  escapeshellarg('/ocr/output.txt')
);
echo 'Debug: cmd=', $cmd;
$f = "java -jar /OCR/ocr.jar /Folder/Sub\\ Folder/filetoocr.pdf /ocr/output.txt";
echo "<pre>$output</pre>";

veya

$f = 'java -jar /OCR/ocr.jar "/Folder/Sub Folder/filetoocr.pdf" /ocr/output.txt';
echo "<pre>$output</pre>";

PHP aynı \ ekleyebilir?

Tırnak kullan?

$f = `java -jar /OCR/ocr.jar '/Folder/Sub Folder/filetoocr.pdf' /ocr/output.txt`;

Neden escape space bile geri keneler:

$f = `java -jar /OCR/ocr.jar /Folder/Sub\ Folder/filetoocr.pdf /ocr/output.txt`;