在Laravel Controller上不工作,在Tinker上工作

时间:2018-11-21 06:07:20

标签: laravel curl laravel-5 guzzle guzzlehttp

  

受影响的枪口版本:6.3 Laravel:5.6.3 PHP:7.2.10

说明 如果我想在修补程序中获得回应

$client = new \GuzzleHttp\Client();
$response = $client->get($url);
json_decode($response->getBody())

我得到预期的答复。

但在我的控制器中

$object_res = $client->get($url);

我遇到错误

“ cURL错误3:格式错误(请参见http://curl.haxx.se/libcurl/c/libcurl-errors.html)”,…}

这意味着该网址不正确,但是正如我所描述的那样,它可以完美地解决问题。

注意 我在本地主机上一切正常,这仅发生在我的测试服务器上。

如果需要提供其他信息,请告诉我。

3 个答案:

答案 0 :(得分:0)

Tinker使用与您的应用程序不同的运行时,这可能会导致问题,因为在一种情况下。 php直接从您的机器直接到达api服务器,而其他的则在发出请求之前通过您的网络服务器。

要做的第一件事是使用

清除laravel缓存和配置
 php artisan cache:clear

php artisan config:clear 

如果失败,我将调查您的Web服务器上的跨域限制或设置。

答案 1 :(得分:0)

请检查服务器上的Guzzle要求。

public class sMessage implements Runnable {
    @Override
    public void run() {
        try {
            Log.v(TAG, "send");
            InetAddress serverAddr = InetAddress.getByName(SERVERIP);
            Socket socket = new Socket(serverAddr, 5000);//create a socket
            DataOutputStream os = new DataOutputStream(socket.getOutputStream());
            PrintWriter ot = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
            String s = "1";

            //s+="\r\n";
            //byte[] bytes = s.getBytes("UTF-8");
            //os.writeChar(1);
            //os.writeBytes(text);
            //os.writeUTF(String.valueOf("123"));
            ot.println(text);
            ot.flush();
            ot.close();
            os.flush();
            os.close();
            socket.close();
        } catch (IOException e) {
            Log.e(TAG, "ERROR");
        }
    }
}

答案 2 :(得分:0)

我刚在测试服务器上遇到此问题,我使用座舱发现了它。但是我的问题是大声/ youtube。如果生产服务器上有selinux,请检查。还要检查.env的文件权限。当不显示服务器变量时,很难给出解决方案。 还请阅读您的laravel日志,向我介绍了解决方案。 希望这会有所帮助。