Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从PackageGist更新时编写器更新失败_Php_Openssl_Xampp_Composer Php_Php 5.6 - Fatal编程技术网

Php 从PackageGist更新时编写器更新失败

Php 从PackageGist更新时编写器更新失败,php,openssl,xampp,composer-php,php-5.6,Php,Openssl,Xampp,Composer Php,Php 5.6,在执行composer安装/更新时,我从openssl收到以下错误: 无法下载“”文件:SSL操作失败,代码为1。OpenSSL错误消息: 错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败 无法启用加密 无法打开流:操作失败 无法完全加载,包信息是从本地缓存加载的,可能已过期 我正在使用: PHP 5.6.3(cli)(构建日期:2014年11月17日15:16:53) XAMPP堆栈5.6.3-0 ubuntu 14.04 composer diag显示:

在执行composer安装/更新时,我从openssl收到以下错误:

无法下载“”文件:SSL操作失败,代码为1。OpenSSL错误消息: 错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败 无法启用加密 无法打开流:操作失败 无法完全加载,包信息是从本地缓存加载的,可能已过期

我正在使用:

  • PHP 5.6.3(cli)(构建日期:2014年11月17日15:16:53)
  • XAMPP堆栈5.6.3-0
  • ubuntu 14.04
  • composer diag显示:

    Checking composer.json: OK
    Checking platform settings: OK
    Checking git settings: OK
    Checking http connectivity: FAIL
    [Composer\Downloader\TransportException] The "https://packagist.org/packages.json"  file  could not be downloaded: SSL operation failed with code 1. OpenSSL Error messages:
    error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
    Failed to enable crypto
    failed to open stream: operation failed
    Checking disk free space: OK
    Checking composer version: 
    
    [Composer\Downloader\TransportException]
    无法下载“”文件:SSL操作失败,代码为1。OpenSSL错误消息:
    错误:14090086:SSL例程:SSL3\u获取\u服务器\u证书:证书验证失败
    无法启用加密
    无法打开流:操作失败

    php-r'var_dump(openssl_get_cert_locations());'显示:

    array(8) {
    ["default_cert_file"]=>
    string(33) "/opt/lampp/share/openssl/cert.pem"
    ["default_cert_file_env"]=>
    string(13) "SSL_CERT_FILE"
    ["default_cert_dir"]=>
    string(30) "/opt/lampp/share/openssl/certs"
    ["default_cert_dir_env"]=>
    string(12) "SSL_CERT_DIR"
    ["default_private_dir"]=>
    string(32) "/opt/lampp/share/openssl/private"
    ["default_default_cert_area"]=>
    string(24) "/opt/lampp/share/openssl"
    ["ini_cafile"]=>
    string(0) ""
    ["ini_capath"]=>
    string(0) ""
    }
    

    对于PHP5.5.19,一切正常。

    我找到了解决方案

    我在跑步:
    FreeBSD 10.1
    Apache2.4
    PHP 5.6.3

    为了找到CA文件,我运行了以下命令

    >找到cacert.pem

    结果是:
    /usr/local/lib/perl5/site_perl/5.16/Mozilla/CA/cacert.pem

    然后打开php.ini文件并
    更改此项:

    );openssl.cafile=

    为此:

    openssl.cafile=/usr/local/lib/perl5/site_perl/5.16/Mozilla/CA/cacert.pem

    注意:此指令仅在PHP5.6.x上可用


    然后重新启动Apache

    将openssl.cafile添加到php.ini对我来说也很有效。 我没有查找证书文件,而是直接下载了它:

    curl>cacert.pem


    然后将openssl.cafile设置指向它。

    通过将SSL证书添加到XAMPP证书文件夹,我解决了SSL错误的问题

    // navigate to a directory to save the certificate
    cd /Downloads
    
    // download a certificate
    wget http://curl.haxx.se/ca/cacert.pem
    
    // rename and move the file to the Xampp certificates folder
    mv cacert.pem /Applications/XAMPP/xamppfiles/share/openssl/cert.pem
    
    别忘了重新启动apache

    在使用XAMPP的mac上:

    cd/Applications/XAMPP/xamppfiles/share/openssl
    sudo curl-O-khttp://curl.haxx.se/ca/cacert.pem
    sudo mv cacert.pem cert.pem
    

    停止并重新启动Apache

    首先:检查将位于
    默认证书文件
    密钥中的证书文件位置,您将在
    openssl\u get\u cert\u locations()中找到它。
    它是一个php openssl函数。您可以按如下方式运行它:

    $ php -r "print_r(openssl_get_cert_locations());"
    
    我的系统中的输出

        Array
        (
            [default_cert_file] => /opt/lampp/share/openssl/cert.pem
            [default_cert_file_env] => SSL_CERT_FILE
            [default_cert_dir] => /opt/lampp/share/openssl/certs
            [default_cert_dir_env] => SSL_CERT_DIR
            [default_private_dir] => /opt/lampp/share/openssl/private
            [default_default_cert_area] => /opt/lampp/share/openssl
            [ini_cafile] => 
            [ini_capath] => 
        )
    
    :下载:

    第三个:将
    certificate.pem
    文件复制到
    默认证书文件
    位置:

    $ sudo mv cacert.pem /opt/lampp/share/openssl/cert.pem
    
    openssl.cafile=/Users/me/.composer/cacert.pem
    
    **从**

    找到cacert.pem
    vi/usr/local/lib/php.ini
    #加上这个
    openssl.cafile=/usr/local/share/perl5/Mozilla/CA/cacert.pem
    #按esc键,然后键入
    :wq#输入
    旋度-sShttps://getcomposer.org/installer |php--version=1.0.0-alpha10
    mv composer.phar/usr/local/bin/composer
    别名编写器='/usr/local/bin/composer'
    作曲家-V
    php/usr/local/bin/composer全局自更新
    cd作曲家/
    
    composer init
    我正在使用Mac OS Sierra,当我试图使用命令更新composer时,
    /usr/local/bin/composer self update
    我不断收到错误:

    [Composer\Downloader\TransportException]                                                          
      The "https://getcomposer.org/version" file could not be downloaded: SSL operation failed with co  
      de 1. OpenSSL Error messages:                                                                     
      error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed                 
      Failed to enable crypto                                                                           
      failed to open stream: operation failed  
    
    我通过以下步骤修复了它:

    1) 使用以下命令创建本地数据库:

    sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
    
    2) 找到证书文件:

    locate cacert.pem 
    
    3) 检查php.ini文件的位置:

    php --ini
    
    4) 如果
    php.ini
    文件的“已加载配置文件”显示为
    (无)
    ,请将文件
    /etc/php.ini.default
    复制到
    /etc/php.ini

    sudo cp /etc/php.ini.default /etc/php.ini
    
    5) 打开
    php.ini
    文件并编辑
    ;openssl.cafile=
    行,取消注释并将链接附加到证书文件位置:

    $ sudo mv cacert.pem /opt/lampp/share/openssl/cert.pem
    
    openssl.cafile=/Users/me/.composer/cacert.pem
    

    就这样。现在,当您运行composer更新时,它将正常工作。

    对于我们来说,这个问题似乎只影响到我们的一个私有存储库。它可能与证书或公司防火墙有关,但它似乎是间歇性的,因此我们无法在找到不同的修复之前进行确认

    在composer.json内部,我们将存储库URL从https更改为ssh变体,并添加了
    “无api”:true
    选项:

    "repositories": [
        {
          "type": "vcs",
          "url": "git@github.com:our-user/our-repo.git",
          "no-api": true
        }
    ]
    
    通过该编辑,composer更新/安装操作能够成功完成

    composer clearcache
    
    当我遇到错误时,这对我有效:

    无法完全加载,包信息是从本地缓存加载的,可能已过期


    即使在添加了最新下载的有效证书之后,我在Windows上也遇到了同样的问题。我在proxy后面运行composer,所以我必须添加环境变量http\u proxy和https\u proxy

    我的环境: PHP 5.6.33 Windows 7 64位 作曲家版本1.6.3 2018-01-31 16:28:17

    我下载了最新的证书并在php.ini中更新了以下路径,但仍然无法运行

    curl.cainfo = C:\Certificates\ca-bundle.crt
    openssl.cafile= C:\Certificates\ca-bundle.crt
    openssl.capath=C:\Certificates
    
    然后执行以下步骤

    1) 打开chrome浏览器并导航

    2) 单击小安全锁图标

    3) 点击有效证书

    4) 打开证书路径选项卡,您将看到以下路径级别

    5) 需要导出图像中标记的1和2的证书

    6) 要导出证书,请单击“查看证书”,转到“详细信息”选项卡,然后单击“复制到文件”

    7) 选择Base64编码

    8) 单击Next并将该文件保存到一个位置,对SETP4中所示的编号(2)执行此操作

    9) 打开.cer文件并将内容复制到用于在php.ini中配置的.crt文件的末尾

    然后试着运行comport安装-它对我有用

    若您看到composer在通过代理访问站点时抛出ssl错误,则该过程应该是相同的。

    1

    php -r "print_r(openssl_get_cert_locations());"
    
    2.vim php.ini

    [openssl]
    openssl.cafile=/usr/local/etc/openssl/cert.pem
    

    只需将此配置添加到composer.json文件中

    "config": {
    "secure-http": false
    }
    
    
    下面是一个工作composer.json文件的完整示例

      "repositories": [{
        "type": "composer",
        "url": "http://packagist.org"
      }],
      "require": {
        "phpmailer/phpmailer": "^6.0"
      },
      "config": {
        "secure-http": false
      }
    }
    ```
    

    请探讨此问题:如果您使用的是卡巴斯基,请检查此项:如果您无法找到您的cacert.pem文件副本,请检查其av