将一个laravel项目的http请求发送到同一台机器中的另一个项目时遇到麻烦

时间:2017-09-07 13:14:21

标签: php laravel curl

我有一个奇怪的问题。我在同一台服务器(本地服务器)上有两个laravel项目,我想从一个项目中检索数据到另一个项目。每个项目都有自己的数据库和凭据。现在关于问题:当我使用GET/POST发送curl()请求时,另一个项目(目标项目)使用我发送请求的项目的凭据。因此,由于凭据和表名称不匹配,select语句不起作用。当我转储uri并将其粘贴到Web浏览器中时,它按预期工作。现在问:为什么第二个项目使用我发送请求的项目的数据库凭证(或者也可能是其他配置)?什么是共享会话或类似的内容?

2 个答案:

答案 0 :(得分:0)

我在解决您的问题时遇到了一些麻烦,但我假设您正在使用来自一个项目的凭据,并以某种方式在您的其他具有不同凭据的项目中获得回报。最重要的是,您还有不同的数据库。怎么会这样?好吧,简而言之,它不应该。可以吗?是的,但你必须故意这样做。没有共享会话。所以我会在两个项目中检查你的数据库连接,看看是否有一些重叠。如果有,请检查那些,因为您的问题可能在那里。如果不是这种情况,请检查您的curl请求,看看您是否传递了正确的项目凭据,从而获得了正确的结果。除此之外,我需要更多信息来帮助你。

谢谢!

哦,你在使用Laravel Passport吗?如果没有,你在做什么/做什么?

答案 1 :(得分:0)

您解决了这个问题吗? 我遇到了同样的情况,并找到了解决方案。 解决方案是如下更改一个项目的.env文件。

change .env as follows.

DB_X_HOST="localhost"  
DB_X_DATABASE="other_project"    
DB_X_USERNAME="homestead"    
DB_X_PASSWORD="secret"    
DB_X_PORT="3306"   

change config\database.php as follows.   
'mysql' => [   
  'driver' => 'mysql',   
  'host' => env('DB_X_HOST', '127.0.0.1'),   
  'port' => env('DB_X_PORT', '3306'),    
  'database' => env('DB_X_DATABASE', 'forge'),   
  'username' => env('DB_X_USERNAME', 'forge'),   
  'password' => env('DB_X_PASSWORD', ''),    
  'charset' => 'utf8mb4',   
  'collation' => 'utf8mb4_unicode_ci',  
  'prefix' => '',  
  'strict' => true,  
  'engine' => null,  
]

对我来说很好。