пакетный файл — неопределенные переменные $ _SCRIPT при выполнении php из запланированной задачи

Спасибо за ваше время заранее.

У меня есть PHP-скрипт, который должен запускаться один раз в день. Мы настроили запланированное задание на сервере клиента, и он выполняет командный файл, который по существу вызывает следующее:

php-cgi.exe -d short_open_tag=On ".\my_script.php"

Если я перехожу прямо к my_script.php через браузер, все работает нормально. Когда я выполняю пакетный скрипт из командной строки или по расписанию, мне выдается несколько ошибок.

  1. Последним результатом запуска планировщика задач всегда является «(0xFFFFFFFF)».
  2. Первая ошибка в командной строке: «Примечание: неопределенный индекс: DOCUMENT_ROOT».
  3. Вторая ошибка в командной строке: «Примечание: неопределенный индекс: SCRIPT_NAME».

Линии, дающие ошибки:

$document_root = $_SERVER[ 'DOCUMENT_ROOT' ];
$_SERVER[ 'FULL_URL' ] .= $_SERVER[ 'SCRIPT_NAME' ];

Если я использую var_dump () переменную $ _SERVER, я вижу, что и DOCUMENT_ROOT, и SCRIPT_NAME там и заполнены правильно. У меня запланированная задача, выполняющаяся с самыми высокими привилегиями под пользователем SYSTEM.

Что я могу сделать, чтобы остановить эти ошибки из командной строки и запланированной задачи?

0

Решение

Вы должны использовать php.exe или же php-win.exe вместо php-cgi.exe, Увидеть эта страница для получения подробной информации о различиях между SAPI.

Но обратите внимание, что $_SERVER superglobal заполняется в CLI иначе, чем веб-сервером. (Моя установка возвращает пустую строку, используя php.exe.)

Если вы хотите получить текущий путь к файлу, используйте __FILE__, Для текущего каталога используйте __DIR__,

Быстрый тест для вас, чтобы попробовать; это должно вернуть текущий каталог:

php -r "echo __DIR__;"
1

Другие решения

При вызове командного файла из хранимой процедуры у меня возникали ошибки, но когда я вызывал php-cgi.exe напрямую и добавлял свои аргументы в текстовое поле аргументов, все работало отлично.

Я предполагаю, что мой командный файл не имел надлежащих разрешений.

-1