2013-12-16 44 views
2

我想在Windows的XAMPP環境中使用來自PHP的exec命令。PHP exec with quotes

當我使用一個簡單的命令行,然後鍵入

「C:\ Program Files文件(x86)的\任何目錄\ sometool.exe」 「C:\ TEMP \ TEST.DAT」

一切正常完美。

然後我使用PHP的exec命令,像這樣:

<?php 
exec('"c:\Program Files (x86)\whatever directory\sometool.exe" c:\temp\test.dat'); 
?> 

它也適用。 但是,當我包含引號的工具似乎沒有得到參數。這意味着

<?php 
exec('"c:\Program Files (x86)\whatever directory\sometool.exe" "c:\temp\test.dat"'); 
?> 

不起作用。我試過逃跑和一切。我找不到解決方案。但是爲了在名稱中使用空格,我需要引號。你能把我指向正確的方向嗎?

+0

您是否正在使用一個非常舊的(5.3.0之前版本)PHP版本? –

+0

是的,它實際上是5.2.9 - 5.3之前的版本有問題嗎? – user1131536

回答

1

謝謝ÁlvaroG. Vicario--你給了正確的方向。我嘗試使用PHP 5.4.22更新的XAMPP ...現在它可以正常工作!

+0

不要再這樣做。你可以**評論**這個*謝謝.. * – 2013-12-16 19:11:33

+1

但這不是一個評論。這是答案 - 解決問題的辦法。我需要做出這個答案才能將其標記爲解決方案。我不能在評論中這樣做,對吧? – user1131536

2

將您的路徑保存爲變量..然後執行該操作。用下面的單引號將路徑包裹起來。

$cmd = '"C:\my path with spaces\targetapp.exe" C:\mypathnospaces\targetfile.xxx'; 

或者 - 嘗試此修復程序的一切空間,試圖對反斜線使用轉義字符,這是未經測試,讓我知道,如果工程或沒有。

$cmd = '"C:\my path with spaces\targetapp.exe" C:\\my other path with spaces\\targetfile.xxx'; 

exec($cmd) 

另一種解決方案是實際的路徑添加到您的Windows環境,讓您不必在所有調用路徑。

+0

工具的路徑包括空格不是問題。包括空格在內的參數是問題。 – user1131536

+0

@ user1131536 - 第二部分「c:\ temp \ test.dat」帶空格嗎? Hrmm ..我將不得不考慮這一點,我想我以前曾經有過同樣的問題。我很快會編輯我的答案,我想我知道該怎麼做。 – tremor