使用exec Laravel PHP运行.sh文件 - php

我正在尝试运行.sh文件,该文件会将excel文件导入到我的数据库中。这两个文件都位于公用文件夹内的同一目录中。由于某种原因,exec命令没有被执行,或者没有任何错误发生。

.sh文件清单:

IFS=,
while read column1  
      do
        echo "SQL COMMAND GOES HERE"

done < file.csv | mysql --user='myusername' --password='mypassword' -D databasename;
echo "finish"

在我的php文件中,我尝试了以下操作:

$content = file_get_contents('folder_name/file_name.sh');
echo exec($content);

和:

shell_exec('sh /folder_name/file_name.sh');

注意:我可以直接从gitbash执行sh文件,但是我希望使用Laravel控制器中的函数来完成。我正在使用Windows OS。

参考方案

您可以使用Laravel http://symfony.com/doc/current/components/process.html中已经存在的Symfony的Process Component

use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;

$process = new Process('sh /folder_name/file_name.sh');
$process->run();

// executes after the command finishes
if (!$process->isSuccessful()) {
    throw new ProcessFailedException($process);
}

echo $process->getOutput();

Laravel 5错误报告抑制 - php

在Laravel 4中,抑制E_NOTICE消息很容易;我似乎无法做到这一点,因为如果我添加error_reporting(E_ALL ^ E_NOTICE) 它只是被覆盖的任何地方。这似乎发生在这里:(index.php)$response = $kernel->handle( $request = Illuminate\Http\Request::…

检查对象是否已在集合中-Laravel - php

当我循环一系列不同的结果时,我希望将对象添加到新集合中。查询:$osRed = Item::where('category', 'Hardware') ->where(function ($query) { $query->where('operating_system', '…

Laravel打印日志 - php

我正在尝试在控制台上打印日志:我输入了:use Log; 然后在控制器中使用 Log::info('test log'); 但它不打印任何日志。 参考方案 我认为您需要在运行后检查storage/logs/laravel.logLog::info('test log'); 希望这对您有帮助

如何在部署中管理Laravel队列? - php

我有一个用于Laravel的HA架构,具有多个Web和队列服务器以及零停机时间部署。它依赖Redis作为队列驱动程序。问题在于,在部署群集的滚动更新时,部署新版本的代码时,无法阻止新队列工作者处理来自旧代码版本的作业。Laravel中是否可以过滤来自与队列工作器不同的代码版本的作业? 参考方案 我看到2个解决方案,即使我从未尝试过,也不能保证它能正常工作,因…

碳“小时不能高于12” - php

我的应用程式从前端开始有这个日期:'13 -07-2017 14:00'我会测试:try{ Carbon::createFromFormat('d-m-Y H:i', $date); }catch (\Exception $err){ return false; } 为什么总是返回此错误?InvalidArgumentException:…