区块链技术博客
www.b2bchain.cn

使用exec Laravel PHP运行.sh文件 – php程序员分享

本文介绍了使用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 SymfonyComponentProcessProcess; use SymfonyComponentProcessExceptionProcessFailedException;  $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 4中,抑制E_NOTICE消息很容易;我似乎无法做到这一点,因为如果我添加error_reporting(E_ALL ^ E_NOTICE) 它只是被覆盖的任何地方。这似乎发生在这里:(index.php)$response = $kernel->handle( $request = IlluminateHttpRequest::…

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

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

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

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

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 使用exec Laravel PHP运行.sh文件 – php程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们