When I want to upload anything in any form I see the Warning: escapeshellarg() has been disabled for security reasons message on my site. What can I do to fix this?
My framework is codeigniter final version.
Here is the full warning:
A PHP Error was encountered
Severity: Warning
Message: escapeshellarg() has been disabled for security reasons
Filename: libraries/Upload.php
The
@
operator will silence any PHP errors the function could raise. You should never use it!Solutions:
Remove the
escapeshellarg
string from thedisable_functions
inphp.ini
fileAsk your host provider to remove Remove the
escapeshellarg
string from thedisable_functions
in php.ini file if you don't have an access to thephp.ini
filemake your own
escapeshellarg
. The function only escapes any single quotes in the given string and then adds single quotes around it.and do something like this:
But what is best is to extend the
Upload.php
library and override the_file_mime_type
function instead of changing on the core of CodeIgniter so that you will not lose it if you ever want to update CodeIgniter.Helpful links: https://www.codeigniter.com/user_guide/general/core_classes.html
Another simple way to solve this issue is just move your application from
development
toproduction
:Open
index.php
in your application root and changeto
Remove the escapeshellarg string from the disable_functions at php.ini* file
Ask your hosting provider to remove the string above if you don't have an access to the php.ini* file
Change hosting provider which allows the running of the escapeshellarg function.
from this website: http://www.2by2host.com/articles/php-errors-faq/disabled_escapeshellarg/
Try
Open Upload.php file from system/libraries folder and put
@
in front ofescapeshellarg($file['tmp_name'])
at line 1066 and second thing upload this file under application/libraries folder that will be better, other wise no problem, you can replace system's Upload.php file.