Задать вопрос
lexa_lashak
@lexa_lashak
Начинающий Python-разработчик

Как исправить ошибку при запуске PHP скрипта?

В этой части кода в строке $config_name = 'configs/config.php'; возникает ошибка:
Notice: Undefined variable: argv in C:\xampp1\htdocs\ali\grab.php on line 22

Warning: array_key_exists() expects parameter 2 to be array, null given in C:\xampp1\htdocs\ali\grab.php on line 22)

Помогите, что тут не правильно написано?
При необходимости могу скинуть файлы к которым обращается скрипт.

<?php 

define('__GROOT__', __DIR__);

date_default_timezone_set('Europe/Moscow');
/*$h = date('G');
if ($h > 2 && $h < 7) {
	echo 'Ещё не время!';
	exit;
}*/
#sleep(rand(1, 200));
include('vendor/autoload.php');
include('Classes/VkAuth.php');
require('Classes/Antigate.php');
require('Classes/VK.php');
require('Classes/Reader.php');
require('Classes/Attachments.php');
require('Classes/Posted.php');
require('Classes/Filter.php');

$config_name = 'configs/config.php';
if (array_key_exists('1', $argv) && mb_strlen($argv[1]) > 2) {
	$config_name = $argv[1];
}
if (array_key_exists('config', $_GET)) {
	$config_name = $_GET['config'];
}
$config = include($config_name);

$need_auth = false;
  • Вопрос задан
  • 2154 просмотра
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
XXXXPro
@XXXXPro
Fullstack Web developer
Это вообще-то не ошибка, а предупреждение, связанное с тем, что массив $argv определен только при запуске из командной строки, а вы скрипт через Web-сервер запускаете. Тем не менее, код, по идее, отрабатывает нормально.
Чтобы избавиться, нужно добавить дополнительную проверку:
if (!empty($argv) && array_key_exists('1', $argv) && mb_strlen($argv[1]) > 2) {

И еще не могу не заметить: делать include файла, имя которого пришло извне (из GET-запроса) без каких-либо проверок — в общем случае очень серьезная дыра в безопасности.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Firik67
Middle PHP Developer
$argv - Содержит массив array из всех аргументов переданных скрипту при запуске из командной строки.
php.net/manual/ru/reserved.variables.argv.php
Ответ написан
Комментировать
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
$argv - только через cli используется. Вы точно из командной строки скрипт запускаете?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽