PHP - невозможно прочитать переменные CLI с помощью _SERVER

Я пытаюсь прочитать имя файла при запуске моего php-файла (в CLI).

Команда выполнения: php phpfile.php filename.csv

Строка кода выглядит следующим образом:

$argv = $_SERVER[argv];

Я получаю следующую ошибку:

Использование неопределенной константы argv — предполагается «argv» в /home/holcim/csvimport.php в строке 14.

У меня register_argv_argc установлено на ON.


person Filip Korngut    schedule 24.02.2015    source источник


Ответы (3)


Это потому, что $_SERVER не существует для CLI SAPI, потому что в командной строке нет сервера. Вы просто используете $argc и $argv, потому что они заполняются автоматически.

См. эту страницу документа для получения дополнительной информации о запуске скриптов из CLI.

ИЗМЕНИТЬ

Обратите внимание, что $argv = $_SERVER[argv]; вернет Use of undefined constant argv - assumed 'argv' в любом SAPI (даже для веб-сервера). Это должно быть $argv = $_SERVER['argv'];, если вы не определили argv как константу.

person Mark Baker    schedule 24.02.2015
comment
Да, это на самом деле о кавычках в ['argv']! - person amenthes; 25.02.2015
comment
@AbraCadaver - мне нравятся DatePeriods, они полезны... и многоточия тоже полезны.... это просто обычные периоды, которые я обычно пропускаю - person Mark Baker; 25.02.2015

$argv и $argc устанавливаются автоматически при запуске скрипта.

$argc дает вам количество аргументов (включая имя скрипта), а $argv — это массив, содержащий аргументы.

person reallyxloco    schedule 24.02.2015

Используйте массив argv и переменные argc. Вот код для начала. Он отображает ошибку, если вы пытаетесь запустить его в веб-браузере. Если количество параметров меньше 2, то отображается мини-справка и закрывается. Наконец, когда введен хотя бы 1 аргумент, аргумент1 будет содержать значение первого аргумента.

<?php
if ($_SERVER['HTTP_USER_AGENT']){echo "Doesnt work in web mode";exit();}
if ($argc < 2){
    echo "\n\n";
    echo $argv[0]." needs arguments as follows...\n\n";
    echo "argument1 -- does something\n";
    exit();
}
$argument1 = $argv[1];
?> 
person Community    schedule 24.02.2015