2011-01-29 2 views
1

Я использую php в качестве языка сценариев командной строки для выполнения различных системных команд.Как включить PHP-register_globals только для локальных скриптов?

Как включить register_globals локально - только для одного скрипта? Можно ли это сделать с помощью самого скрипта?

Я бы предпочел не изменять глобальные настройки, если это возможно.

ответ

4

Изменение директивы или файл php.ini в командной строке:

C:\>php -? 
[...] 
    -c <path>|<file> Look for php.ini file in this directory 
[...] 
    -d foo[=bar]  Define INI entry foo with value 'bar' 

т.д .:

php -d register_globals=1 do-stuff.php 

Конечно, в долгосрочной перспективе это лучше просто исправить сценарий. В противном случае вы можете обнаружить, что в какой-то момент сценарий даже не будет запущен после обновления системы.

Если вы используете синтаксис shebang, вам может потребоваться написать оболочку для PHP, чтобы вы могли предоставить более одного аргумента.

+0

В этом случае shebang может быть '#!/Usr/bin/php -dregister_globals = 1' - там поддерживается ограниченная конкатенация параметров. – mario

2

Вы всегда можете позвонить по номеру extract() в любом массиве, который хотите «зарегистрировать». Вы должны проверить дополнительные параметры в руководстве, он позволяет вам контролировать, чтобы он переписывал переменные или префикс их.

Обратите внимание, что register_globals устарел, есть определенные проблемы с безопасностью, которые вы должны учитывать при выполнении подобных действий.

Смежные вопросы