2015年12月28日 星期一

遠振主機 escapeshellarg() has been disabled for security reasons

用遠振主機又踩雷啦,遠振將escapeshellarg這個函式disabled 所以只要有用到 SebastianBergmann\Environment\Runtime Symfony\Component\Console\Input\Input Symfony\Component\HttpFoundation\File\MimeType\FileBinaryMimeTypeGuesser Symfony\Component\Process\ProcessUtils Tracy\Debugger 都會提示 escapeshellarg() has been disabled for security reasons 不過還好php5.3之後就支援namespace,可以讓我們輕鬆略過這個問題 (如果使用的套件不支援namespace那就只好認命的去修改程式囉) 只要require下面的檔案就可以解決這些問題了 ```php namespace Yuan\Jhen { if (function_exists('escapeshellarg') === true) { function escapeshellarg($input) { return \escapeshellarg($input); } } else { function escapeshellarg($input) { $input = str_replace('\'', '\\\'', $input); return '\''.$input.'\''; } } } namespace SebastianBergmann\Environment { function escapeshellarg($input) { return \Yuan\Jhen\escapeshellarg($input); } } namespace Symfony\Component\Console\Input { function escapeshellarg($input) { return \Yuan\Jhen\escapeshellarg($input); } } namespace Symfony\Component\HttpFoundation\File\MimeType { function escapeshellarg($input) { return \Yuan\Jhen\escapeshellarg($input); } } namespace Symfony\Component\Process { function escapeshellarg($input) { return \Yuan\Jhen\escapeshellarg($input); } } namespace Tracy { function escapeshellarg($input) { return \Yuan\Jhen\escapeshellarg($input); } } ```