2012-04-30 13 views
7

Kiedy chcę załadować wszystko w dowolnej formie, widzę Ostrzeżenie: escapeshellarg() został wyłączony ze względów bezpieczeństwa wiadomość na mojej stronie. Co mogę zrobić, aby to naprawić?escapeshellarg() został wyłączony ze względów bezpieczeństwa

Moje środowisko to ostateczna wersja codeigniter.

Oto pełna ostrzeżenie:

A PHP Error was encountered 

Severity: Warning 

Message: escapeshellarg() has been disabled for security reasons 

Filename: libraries/Upload.php 

Odpowiedz

6

Spróbuj

$cmd = 'file --brief --mime ' . @escapeshellarg($file['tmp_name']) . ' 2>&1'; 

Otwórz plik upload.php z folderu System/Biblioteki i umieścić @ przed escapeshellarg($file['tmp_name']) na linii 1066 a druga rzecz to przesłać plik w folderze application/libraries, który będzie lepszy, w innym razie nie ma problemu, możesz zastąpić plik Upload.php systemu.

+0

Dziękuję, mam ten błąd i dziś odpowiedź pracował jak urok! –

+2

thats po prostu zignorować ostrzeżenie – Waqleh

6

"@" uciszy wszystkie błędy PHP, które funkcja może podnieść. używać go

rozwiązania:

1- Usuń ciąg escapeshellarg od disable_functions w pliku php.ini

2- Zapytaj provider'a usunąć Usuń ciąg escapeshellarg z disable_functions w PHP Plik .ini, jeśli nie masz dostępu do pliku php.ini

3-załóż własne escapeshellarg. Funkcja tylko unika pojedynczych cudzysłowów w danym ciągu, a następnie dodaje pojedyncze cudzysłowy wokół niego.

function my_escapeshellarg($input) 
{ 
    $input = str_replace('\'', '\\\'', $input); 

    return '\''.$input.'\''; 
} 

i zrobić coś takiego:

//$cmd = 'file --brief --mime ' . escapeshellarg($file['tmp_name']) . ' 2>&1'; 
    $cmd = 'file --brief --mime ' . $this->my_escapeshellarg($file['tmp_name']) . ' 2>&1'; 

Ale to, co najlepsze jest rozszerza Prześlij.php biblioteka i re-Wright funkcja zamiast zmieniać na rdzeniu CodeIgniter, dzięki czemu nie stracisz go, jeśli kiedykolwiek chcesz zaktualizować Innym prostym sposobem CodeIgniter

2

aby rozwiązać ten problem jest _file_mime_type po prostu przenieść aplikację z development do production:

Otwórz index.php w katalogu głównym aplikacji i zmienić

define('ENVIRONMENT', 'development'); 

do

define('ENVIRONMENT', 'production'); 
Powiązane problemy