Я выполняю скрипт Python из foo.php
с помощью exec
и я хочу, чтобы скрипт Python знал, из какого каталога происходит вызов PHP. В этом примере это должно быть: /www/includes
# File tree
/script.py
/www/index.php
/www/includes/foo.php
var_dump( exec( "/usr/bin/python /script.py" ) );
#!/usr/bin/env python
import os
print( os.getcwd() )
я нашел это os.getcwd()
прекрасно работает, когда foo.php
URL вызывается прямо в браузере. Я получаю желаемый результат: /www/includes
Тем не менее, это не работает когда foo.php
вызывается из другого PHP-файла в другом каталоге, например /www/index.php
,
require_once '/www/includes/foo.php';
Сценарий Python печатает /www
поскольку это где index.php
жизни.
Как я могу получить скрипт Python для возврата /www/includes
когда он выполняется foo.php
независимо от того, как foo.php
называется? Я попробовал некоторые traceback
методы без удачи, так как я думаю, что это относится только к ошибкам отслеживания.
Вам нужно изменить ваш рабочий каталог на каталог foo.php, что вы должны уметь делать с chdir:
chdir (__DIR__); # change working dir to current directory.
В foo.php
Других решений пока нет …