在我的共享主机上的Lavarvel(5.4.7)应用程序中,当尝试通过Artisan运行cron作业时出现“escapeshellarg()因安全原因而被禁用”servletOutPutStream
启用escapeshellarg不是一个选项,所以我正在寻找最体面的工作,而不必更改vendor文件夹中的任何类。 我能想到的一些可能的解决方案但是还没弄明白该怎么做:
1)用自定义的替换原生的escapeshellarg。
2)覆盖Symfony \ Component \ Process \ ProcessUtils类
3)重写ProcessUtils :: escapeArgument函数(调用escapeshellarg),以便vendor文件夹中的其他类开始使用覆盖的类/函数(但不必自己更改或覆盖这些类)。
有办法做到这一点吗?或者有其他方法来解决错误吗?
答案 0 :(得分:0)
只需创建自己的escapeshellarg函数并替换
escapeshellarg($input) function
到
$this->my_escapeshellarg($input)
function my_escapeshellarg($input)
{
$input = str_replace('\'', '\\\'', $input);
return '\''.$input.'\'';
}