Что могло изменить каталог в php Windows помимо chdir () и chroot ()? (Simpletest включают ошибку файла в Windows),

(Извините, если это названо плохо. Я на самом деле пытаюсь выполнить две вещи - узнают, как текущий каталог может быть изменен в PHP, и исправлять ошибку в Simpletest, работающем на WAMP.)

Я выполняю SimpleTest (simpletest.org) в моем Windows 7 локальная машина на EasyPHP (изменение WAMP).

Когда я запускаю тесты, каталог изменяется от локального dir сценария назад к: C:\Program Files (x86)\EasyPHP\apache согласно getcwd ().

Я создал пару коротких сценариев для исследования getcwd () вывод. Они возвращают текущий путь сценария как ожидалось: C:\Users\Burton\Desktop\Sites\dbmover. Сценарии:

serverpath/getcwd.php:

serverpath/tests/getcwd.php:

Оба возвращают текущий путь: C:\Users\Burton\Desktop\Sites\dbmover

Я сделал поиск через источник Simpletest для проверки на использование chdir () и chroot () - единственные пути. Simpletest не использует chdir ();

Что еще могло изменять путь??

Эта проблема относительного пути по-видимому очень характерна для Simpletest, используемого в Windows. Этот плакат на stackoverflow имеет его, как делает этот плакат в другом месте.

Некоторые люди рассматривайте проблему как нормальную, но я думаю, что это - ошибка.

Я обходил его сам при помощи dirname (__FILE__) но я зафиксировал бы его для работы правильно.

1
задан Community 23 May 2017 в 12:13
поделиться

3 ответа

Я никогда не использовал simpletest, и, не зная его внутренностей, трудно сказать. Однако: вызываемые команды (exec / system / etc.) могут влиять на рабочий каталог. Следует отметить, что cgi версия php (не sapi cli) меняет свой рабочий каталог на каталог скрипта, и может быть использована для php -l проверки синтаксиса и других приложений. Если проблема в этом, обязательно передайте ему параметр -C.

1
ответ дан 2 September 2019 в 22:47
поделиться

Оказывается, проблема пути вызвана тем, как выполняется Simpletest. У него есть классная функция, называемая «автозапуск», которая, по сути, представляет собой включаемый файл в верхней части тестов, вызывающих первый файл.

Он использует register_shutdown_function (), который запускается непосредственно перед выходом из скрипта. Однако путь выполнения этой функции неверен во многих версиях WAMP .

Я отправил исправление этой проблемы .

Кстати, функции, которые могут изменять каталог в PHP: система() exec () chdir () chroot ()

1
ответ дан 2 September 2019 в 22:47
поделиться

Это больше похоже на проблему с include_path. Что покажет echo get_include_path();?

0
ответ дан 2 September 2019 в 22:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: