Есть ли способ переписать библиотеку Upload.php для codeigniter, потому что я постоянно сталкиваюсь
escapeshellarg () отключен по соображениям безопасности
Я пробовал решение в этом потоке с помещением @ перед escapeshellarg, но все же cannont загружать мои изображения, это просто игнорировать предупреждение.
Я пытался связаться с администратором моего хостинга, но по соображениям безопасности они не могут его включить.
Я могу сделать, чтобы обмануть это, чтобы я мог загружать изображения?
Вы можете сделать свой собственный escapeshellarg
, это очень простая функция, которая escapeshellarg
только отдельные кавычки в данной строке, а затем добавляет одинарные кавычки вокруг нее.
function my_escapeshellarg($input) { $input = str_replace('\'', '\\\'', $input); return '\''.$input.'\''; }
Однако, если ваш провайдер отключил другие функции, Upload.php
, вам может быть не повезло.
Вы можете посмотреть, какие функции отключены, создав простой .php
файл с вызовом phpinfo()
. (поиск disable_functions
в сгенерированном выходе)
Попробуйте заменить escapeshellarg на @escapeshellarg в файле system / libraries / Upload.php.
Это не имеет ничего общего с CI. Функция была отключена в файле php.ini
. Общепринято отключать различные небезопасные функции (с точки зрения администратора сервера).
Если вы используете общий хостинг, вероятно, вы вряд ли сможете это сделать. Попробуйте спросить своего провайдера.
Если вы можете редактировать php.ini
тогда откройте его, найдите поле disable_functions
и удалите escapeshellarg
из списка. Затем перезапустите сервер. Это должно включить функцию.
Если у вас все еще есть проблемы, обратитесь к своему провайдеру, если вообще возможно загрузить материал. Я имею в виду, если ваш провайдер намеренно удалил все функции загрузки, тогда вы будете тратить свое время на поиск способа сделать это.
Перейти в систему / библиотеки / Upload.php
Замена
escapeshellarg с @escapeshellarg
if (DIRECTORY_SEPARATOR !== '\\') { $cmd = 'file --brief --mime ' . @escapeshellarg ($file['tmp_name']) . ' 2>&1';