Я выполняю скрипт Python из foo.php
, используя exec
, и я хочу, чтобы скрипт Python знал, из какого каталога исходит вызов PHP. В этом примере это должно быть: /www/includes
# 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()
отлично работает, когда URL-адрес foo.php
вызывается непосредственно в браузере. Я получаю желаемый результат: /www/includes
Однако это не работает, когда foo.php
вызывается из другого файла PHP в другом каталоге, например /www/index.php
.
index.php
require_once '/www/includes/foo.php';
Сценарий Python печатает /www
, так как именно там живет index.php
.
Проблема
Как я могу заставить скрипт Python возвращать /www/includes
, когда он выполняется foo.php
, независимо от того, как вызывается foo.php
? Я пробовал некоторые методы traceback
безуспешно, так как я думаю, что это применимо только к ошибкам трассировки.
include()
в php действует так, как если бы содержимое включаемого файла было буквально вырезано и вставлено в файл, выполняющий включение. фактически вашfoo.php
является ЧАСТЬЮ index.php - person Marc B   schedule 25.11.2015