有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

运行backticks/exec()的java PHP路径问题

我试图从命令行运行一个javajar文件,在执行过程中它给出了一个路径。在这条路径上,它们的空间就是空间,这就是问题的根源

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

如果可以看到子文件夹名称之间的空格,则会导致问题

通过命令行,它将是(有效的)

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

有什么建议可以解决这个问题吗

希望你能提出建议


共 (5) 个答案

  1. # 1 楼答案

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

    或者

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

    使用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.

    也许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;
    
  3. # 3 楼答案

    在PHP中添加相同的\

  4. # 4 楼答案

    为什么不escape即使在后面的滴答声中space

    $f = `java -jar /OCR/ocr.jar /Folder/Sub\ Folder/filetoocr.pdf /ocr/output.txt`;
    
  5. # 5 楼答案

    使用引号

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