exec (): Windows'ta tam komutu alıntı

0 Cevap php

Ben harici bir programı çalıştırmak için exec() kullanan bir web uygulaması yazdım. Program yolu yapılandırılabilir ve kendi adına boşluk olması beklenebilir. Hepimizin bildiği gibi, Windows komut istemi dosya adları veya parametrelerinden yararlanılarak boşluk kabul, sadece onları alıntı çift var:

C:\>C:\Archivos de programa\GraphicsMagick-1.3.12-Q16\gm.exe
"C:\Archivos" no se reconoce como un comando interno o externo,
programa o archivo por lotes ejecutable.

C:\>"C:\Archivos de programa\GraphicsMagick-1.3.12-Q16\gm.exe"
GraphicsMagick 1.3.12 2010-03-08 Q16 http://www.GraphicsMagick.org/

Şimdiye kadar iyi. Ben bakan değilim sorun exec () PHP fonksiyon kendisi kullanımıdır. Bazı Windows sunucuları (program + arguments) çift tırnak tam komutu içine gerektirir:

exec('""C:\Archivos de programa\GraphicsMagick-1.3.12-Q16\gm.exe" version"');

... Ve diğer Windows sunucuları gerektiren not çift tırnak kullanımı:

exec('"C:\Archivos de programa\GraphicsMagick-1.3.12-Q16\gm.exe" version');

Ben sunucu Windows çalışır olup olmadığını tespit etmek için PHP_OS sabit okuyabilir ama ben tabi tırnak veya tırnak değil arkasında kural bilmiyorum. En PHP kılavuzda açıklanmıştır eğer ben bulamıyorum.

Bu yüzden elle uygulamanın her örneğini yapılandırmak gerekmez tırnak ihtiyaç varsa programlı belirlemek mümkün mü?

Update #1: Ben bunu daha net yapmak için sorunun bölümlerini reworded ettik böylece yanlış ediliyordu.

Update #2: Ben fazladan tırnak neden gerek duyulduğu tam nedenini (PHP cmd /c için bir iç çağrısı verir) açıklıyor a comment in the PHP manual bulundu. Bu sisteme bağlı olarak doğru veya yanlış gibi görünüyor neden hala bilmiyorum.

0 Cevap