Php “拉雷维尔”;由于安全原因,已禁用escapeshellarg();变通办法
在共享主机上的Lavarvel(5.4.7)应用程序中,我在尝试通过Artisan(如Php “拉雷维尔”;由于安全原因,已禁用escapeshellarg();变通办法,php,laravel,symfony,Php,Laravel,Symfony,在共享主机上的Lavarvel(5.4.7)应用程序中,我在尝试通过Artisan(如Artisan::call('doSomething')运行cron作业时,遇到错误“escapeshellarg()因安全原因已被禁用” 启用escapeshellarg不是一个选项,因此我正在寻找最体面的工作,而不必更改供应商文件夹中的任何类。 我可以想出一些可能的解决方案,但还没有找到解决方法: 1) 将本机escapeshellarg替换为自定义escapeshellarg 2) 重写Symfony\C
Artisan::call('doSomething')运行cron作业时,遇到错误“escapeshellarg()因安全原因已被禁用”代码>
启用escapeshellarg不是一个选项,因此我正在寻找最体面的工作,而不必更改供应商文件夹中的任何类。
我可以想出一些可能的解决方案,但还没有找到解决方法:
1) 将本机escapeshellarg替换为自定义escapeshellarg
2) 重写Symfony\Component\Process\ProcessUtils类
3) 重写ProcessUtils::escapeArgument函数(调用escapeshellarg),以便供应商文件夹中的其他类开始使用重写的类/函数(但无需更改或重写这些类本身)
有办法做到这一点吗?还是有其他方法可以解决此错误?只需创建自己的escapeshellarg函数并替换
escapeshellarg($input)函数
to
$this->my_escapeshellarg($input)
function my_escapeshellarg($input)
{
$input = str_replace('\'', '\\\'', $input);
return '\''.$input.'\'';
}
只需创建自己的escapeshellarg函数并替换
escapeshellarg($input)函数
to
$this->my_escapeshellarg($input)
function my_escapeshellarg($input)
{
$input = str_replace('\'', '\\\'', $input);
return '\''.$input.'\'';
}
4) 获取像样的主机提供程序4)获取像样的主机提供程序我可以在哪里添加此功能?我可以在哪里添加此功能??