2015-11-25 25 views
0

我正在使用執行foo.php的Python腳本,我希望Python腳本知道PHP調用源自哪個目錄。在這個例子中,它應該是:/www/includesPython腳本如何知道調用它的PHP文件的路徑?

# File tree 
/script.py 
/www/index.php 
/www/includes/foo.php 

foo.php

var_dump(exec("/usr/bin/python /script.py")); 

script.py

#!/usr/bin/env python 

import os 

print(os.getcwd()) 

我發現os.getcwd()的偉大工程時,foo.php URL直接在一個名爲瀏覽器。我得到期望的結果:/www/includes

然而,不起作用foo.php正在從另一個PHP文件調用不同的目錄,如/www/index.php

的index.php

require_once '/www/includes/foo.php'; 

的Python腳本打印/www,因爲這是index.php生活。

問題

我怎樣才能得到,當它通過foo.php執行foo.php是無論怎麼被調用的Python腳本返回/www/includes?我嘗試了一些traceback方法,但沒有運氣,因爲我認爲它只適用於跟蹤錯誤。

+0

你不能。 'include()'在php中的作用就好像被包含的文件的內容被切割並粘貼到執行include的文件中。實際上你的'foo.php'是index.php的一部分 –

+0

謝謝MarcB。這非常有見地。 –

回答

1

你需要改變你的工作目錄foo.php的目錄,你應該能夠CHDIR做到:

chdir (__DIR__); # change working dir to current directory. 

在foo.php

+0

這工作。這個解決方案的不幸之處在於,它不能在Python中完全解析,工作目錄基本上在PHP中使用'chdir()'進行欺騙。因此,考慮到上面的MarcB的評論,似乎真正的追溯是永遠不可能的,因爲Python沒有包含/需要其他文件的PHP過程的可見性。謝謝你們倆。 –

相關問題