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;
  • Вопрос задан
  • 2124 просмотра
Решения вопроса 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 используется. Вы точно из командной строки скрипт запускаете?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы