PHP Ruta emite ejecución BackTicks / EXEC () -- java campo con php campo con macos camp Relacionados El problema

PHP Path issue running backticks/exec()


0
vote

problema

Español

Estoy tratando de ejecutar un archivo JAVA JAVA desde la línea de comandos y dentro de la ejecución que le da una ruta. Con este camino, sus espacios y esto está causando el problema.

es decir

  import React, { Component } from 'react'; import { Marker, Tooltip, Polygon } from 'react-leaflet'; import L from 'leaflet'; import './style.css'; import icon from './marker.svg';  /**  * @class ./widgets/SeatMap/components/LeafletMap/components/CategoryControl/components/ShapeLayer  */ class ShapeLayer extends Component {     /**      * @type {object}      */     shapes = {};      /**      * Constructor.      *      * @param {object} props      */     constructor (props)     {         super(props);         this.shapes = props.shapes;     }      /**      * @returns {XML}      */     render() {         return (             <div className={'ShapeLayer'}>                  {                     this.shapes['texts'].map(text => {                         return (                             <Marker key={text['id']} position={text['coordinates']} draggable={false} opacity={0.01} icon={icon}>                                 <Tooltip direction={"center"} permanent className={'shape-tooltip'}>                                     <span>{text['text']}</span>                                 </Tooltip>                             </Marker>                         );                     })                 }                  {                     this.shapes['polygons'].map(polygon => {                         return (                             <Polygon key={polygon['id']} positions={polygon['coordinates']} fillColor={"white"} color={'gray'} />                         );                     })                 }             </div>         )     } }  export default ShapeLayer; 2  

Si puede ver el espacio entre el nombre de la sub carpeta, causa el problema.

por línea de comando sería (que funciona)

  import React, { Component } from 'react'; import { Marker, Tooltip, Polygon } from 'react-leaflet'; import L from 'leaflet'; import './style.css'; import icon from './marker.svg';  /**  * @class ./widgets/SeatMap/components/LeafletMap/components/CategoryControl/components/ShapeLayer  */ class ShapeLayer extends Component {     /**      * @type {object}      */     shapes = {};      /**      * Constructor.      *      * @param {object} props      */     constructor (props)     {         super(props);         this.shapes = props.shapes;     }      /**      * @returns {XML}      */     render() {         return (             <div className={'ShapeLayer'}>                  {                     this.shapes['texts'].map(text => {                         return (                             <Marker key={text['id']} position={text['coordinates']} draggable={false} opacity={0.01} icon={icon}>                                 <Tooltip direction={"center"} permanent className={'shape-tooltip'}>                                     <span>{text['text']}</span>                                 </Tooltip>                             </Marker>                         );                     })                 }                  {                     this.shapes['polygons'].map(polygon => {                         return (                             <Polygon key={polygon['id']} positions={polygon['coordinates']} fillColor={"white"} color={'gray'} />                         );                     })                 }             </div>         )     } }  export default ShapeLayer; 3  

¿Alguna sugerencia como puedo resolver esto?

Espero que puedas aconsejar

Original en ingles

I'm trying to run a java jar file from the command line and within the the execution it gives a path. Withing this path their are spaces and this is causing the issue.

ie

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

If you can see the space in between the Sub Folder name causes the issue.

By command line it would be (which works)

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

any suggestions how I can resolve this ??

Hope you can advise

        
   
   

Lista de respuestas

1
 
vote

Use Escapeshellarg () :

Escapeshellarg () Agrega comillas simples alrededor de una cadena y cotizaciones / escapa de las citas individuales existentes permitiéndole pasar una cadena directamente a una función de shell y tenerla tratada como un solo argumento seguro .

y tal vez 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;   
 

Use 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.

and maybe 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; 
 
 
0
 
vote
  $f = "java -jar /OCR/ocr.jar /Folder/Sub\ Folder/filetoocr.pdf /ocr/output.txt"; echo "<pre>$output</pre>";   

o

  $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>"; 

or

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

Agregar el mismo EN PHP?

 

add the same \ in PHP?

 
 
0
 
vote

¿Usar cotizaciones?

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

Use quotes?

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

¿Por qué no escape el space Incluso en las garrapatas posteriores:

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

Why not escape the space even in the back ticks:

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

Relacionados problema

5  Cómo configurar un icono de Menubar en Mac OSX usando WX  ( How to set a menubar icon on mac osx using wx ) 
No pude encontrar ningún puntero sobre cómo crear un icono de Menubar en OSX usando WX. Originalmente pensé que la clase WxTaskBaricon haría, pero en realidad...

35  ¿Cuáles son las versiones preferidas de VIM y EMACS en Mac OS X? [cerrado]  ( What are the preferred versions of vim and emacs on mac os x ) 
Según lo que actualmente representa, esta pregunta no es un buen ajuste para nuestro Q & Amp; un formato. Esperamos que las...

3  C ++ Herencia múltiple y Objetivo-C. ¿Es este es un error en GCC?  ( C multiple inheritance and objective c is this is a bug in gcc ) 
Me encontré con un comportamiento extraño ayer. Parece un error de compilador para mí o ¿hay algo que he perdido? Estaba envolviendo Facebook Connect para las...

0  Cacao ¿Por qué tengo que retener y liberar un parámetro de función?  ( Cocoa why do i have to retain and release a function parameter ) 
Estoy trabajando a través del libro de Aaron Hillegass, específicamente el ejemplo de la lotería. Tuve una pregunta sobre el método date2 ; ¿Por qué tengo qu...

23  ¿Cómo enciendo los números de línea de forma predeterminada en TextWrangler en la Mac?  ( How do i turn on line numbers by default in textwrangler on the mac ) 
Estoy harto de tener que encenderlos cada vez que abra la solicitud. ...

5  Captura de salida de sonido en Mac  ( Capture sound output on mac ) 
Estoy tratando de portuar mi protector de pantalla de Windows a Mac y una de sus características reaccionó en la salida del sonido del sistema. En Windows, er...

0  Xcode 3.2 Configuración aún accediendo a OS X 10.4 Framework cuando se selecciona 10.5  ( Xcode 3 2 configuration still accessing os x 10 4 framework when 10 5 is selecte ) 
Quería intentarlo y usar algunas características introduce en 10.5 (como texto principal), por lo que configuro el SDK BASE y el objetivo de implementación ta...

338  Características ocultas de Xcode  ( Hidden features of xcode ) 
Bloqueado . Esta pregunta y sus respuestas son bloqueadas porque la pregunta es off-topic pero tiene importancia histórica. Actualmente no está a...

41  ¿Cómo puedo encontrar la ruta completa a una fuente de su nombre de visualización en una Mac?  ( How can i find the full path to a font from its display name on a mac ) 
Estoy usando la API de JavaScript de Photoshop para encontrar las fuentes en un PSD determinado. Dado un nombre de fuente devuelto por la API, quiero encont...

21  Cómo pestaña foco de atención hacia un campo desplegable en Mac OSX  ( How to tab focus onto a dropdown field in mac osx ) 
En Windows, en cualquier formulario de Windows o navegador web, puede usar el botón TAB para cambiar de enfoque a través de todos los campos de formulario. ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos