Что может изменить каталог в php Windows, кроме chdir () и chroot ()? (Простейшая ошибка включения файла в Windows) - PullRequest
1 голос
/ 24 июля 2010

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

Я запускаю SimpleTest (simpletest.org) на своем локальном компьютере с Windows 7 на EasyPHP (вариант WAMP).

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

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

serverpath / getcwd.php: <? echo getcwd(); require_once('tests/getcwd.php) ?>

serverpath / tests / getcwd.php: <? echo getcwd(); ?>

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

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

Что еще может изменить путь ??

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

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

Я сам обошел ее, используя dirname (__FILE__), но я бы скорее исправил ее, чтобы она работала правильно.

Ответы [ 3 ]

1 голос
/ 24 июля 2010

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

1 голос
/ 25 июля 2010

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

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

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

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

0 голосов
/ 24 июля 2010

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

...