>  기사  >  백엔드 개발  >  PHP 컬 오류 코드 7 문제를 해결하는 방법

PHP 컬 오류 코드 7 문제를 해결하는 방법

藏色散人
藏色散人원래의
2021-09-12 10:18:066808검색

PHP 컬 오류 코드 7에 대한 해결 방법: 1. selinux 디렉토리에서 구성 파일을 엽니다. 2. 구성 파일에서 "SELINUX=enforcing" 줄을 찾습니다. 3. "SELINUX=disabled"를 변경합니다. .

PHP 컬 오류 코드 7 문제를 해결하는 방법

이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터

PHP 컬 오류 코드 7 문제를 해결하는 방법은 무엇입니까? CURL 오류 해결 방법(7): 호스트에 연결할 수 없습니까?

1. 문제 설명

타사 인터페이스를 호출할 때 로컬로 호출할 때는 모든 것이 정상이지만 온라인으로 호출할 때는 실패합니다!

타사 인터페이스가 curLRequest() 메서드를 통해 로컬로 호출되면 컬_errno() 메서드는 호출이 성공했음을 나타내는 결과 0을 반환합니다. 온라인 컬_errno() 메서드는 결과 7을 반환합니다. , 호출이 실패했음을 나타냅니다.

환경:

로컬 wamp, 온라인 lnmp

환경 문제를 해결하기 위해 서버 cmd에서 컬 기능을 실행하여 타사 인터페이스에 게시 요청을 했고 호출이 성공한 것을 확인했습니다! 호출 스크립트는 다음과 같습니다.

curl -i -X POST -H 'Accept:application/json' -H 'Content-Type:application/json;charset=utf-8' -H 'Authorization:**********************=' -d '{"voipAccount":"*********"}' 第三方接口的URL

타사 인터페이스 호출을 위한 키 코드:

  /**
     * @param $requestUrl | String 请求的地址
     * @param bool $https
     * @param $headerInfo | array 头文件信息
     * @param string $rquestMethod | String 请求类型
     * @param $requestData | json 发送请求的数据
     * @return mixed     */
    public function curLRequest($requestUrl,$requestData,$https=true,$rquestMethod='post')
    {        $headerInfo=[            'Accept:application/json',
            'Content-Type:application/json;charset=utf-8',
            'Authorization:'.self::$auth
        ];        $ch = curl_init();//初始化
        curl_setopt($ch, CURLOPT_URL, $requestUrl);//设置访问的URL
        curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); // 模拟用户使用的浏览器
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headerInfo); // 设置头信息
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);//只获取页面内容,但不输出
        if($https){
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);//不做服务器认证
            curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);//不做客户端认证        }        if($rquestMethod == 'post'){
            curl_setopt($ch, CURLOPT_POST, true);//设置请求是POST方式
            curl_setopt($ch, CURLOPT_POSTFIELDS, $requestData);//设置POST请求的数据        }        $str = curl_exec($ch);//执行访问,返回结果
        if(curl_errno($ch)){            Log::write('结果=========================================================:'.curl_errno($ch));            return ['statuscode' => -1, 'data' => 'curl请求错误,错误码为'.curl_errno($ch)];
        }        Log::write('结果=========================================================:'.curl_errno($ch));        Log::write('返回结果:'.$str);
        curl_close($ch);//关闭curl,释放资源
        return json_decode($str,true);
    }

다양한 조사 끝에 코드가 정확했습니다. 온라인 환경 구성과 관련이 있습니다.

2. 해결 방법

selinux 디렉터리에서 구성 파일을 엽니다 

nano /etc/selinux/config

구성 파일에서 SELINUX=enforcing 줄을 찾습니다

3 SELINUX 변경=비활성화

4저장, 종료, 서버 다시 시작

3. 요약

CURL 오류 7 권한 거부에 연결하지 못했습니다." 오류는 일부 방화벽이나 이와 유사한 것에 의해 CURL 요청이 차단되었기 때문에 발생합니다.

curl 요청이 표준 포트와 일치하지 않을 때 이 문제가 발생합니다.

예를 들어 포트 1234에서 컬을 수행하면 포트 80 때문에 이 문제가 발생합니다.

가장 일반적인 이 오류는 CentOS 및 'selinux'가 있는 기타 운영 체제에서 나타납니다.

'selinux'를 비활성화하거나 변경해야 합니다.

권장 학습: " PHP 비디오 튜토리얼"

위 내용은 PHP 컬 오류 코드 7 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.