2011-02-09 63 views
1

我希望做類似的事情比How to "fork" a video conversion process into background, in php?編程獲取路徑到PHP

exec("/usr/bin/php ./foo.php > /dev/null 2>&1 &"); // executed in Apache 

但是,這會在各種平臺上運行:我的機器,其中PHP是在〜/,窗口編譯,幾個prod服務器...

有沒有辦法以編程方式獲取「/ usr/bin/php」部分?

事情我能想到的:

  • 獲取當前的PID,猜可執行從中
  • 在C,第一個參數是可執行文件的路徑,也許有類似的東西
+0

如果您希望在網頁請求中使用此代碼(您將其標記爲apache),您永遠不會知道。 Apache不會在通用配置中調用任何PHP二進制文件。 – 2011-02-09 10:23:27

+0

@丹什麼是「常見配置」? suPHP?這就是使用二進制文件(php-cgi)。 – 2011-02-09 10:26:23

回答

2

最簡單的方法是簡單地確保在$PATH環境變量中找到php CLI二進制文件,然後只使用php /path/to/foo.php

在UNIX上,您還可以使用/usr/bin/env php執行$PATH中的第一個php二進制文件。但是,這顯然不會在Windows中工作。

最後一種顯而易見的方法是將位置設置爲PHP作爲可配置選項,並在適當時使用用戶指定的路徑。