首页 > 其他分享 >安装pcov遇到的问题

安装pcov遇到的问题

时间:2022-10-10 00:01:30浏览次数:62  
标签:return 遇到 cacheid cache cachettl pcov install 安装

pcov

用于PHP的自包含CodeCoverage兼容驱动程序,安装源代码

安装步骤

git clone https://github.com/krakjoe/pcov.git
cd pcov
phpize
./configure --enable-pcov
make
make test
make install

image-20221009233245745image-20221009233327132

在安装好之后运行pecl install pecv时遇到了一些问题,首先是

image-20221009233446567

Trying to access array offset on value of type bool in PEAR/REST.php on line 187

这个报错的意思是:尝试访问类型为 null 的值的数组偏移量,就是说有个变成为nul导致了报错。php版本为7.4的时候才出现了这个错误。我们翻回去看看源码的样子

function useLocalCache($url, $cacheid = null)
    {
        if ($cacheid === null) {
            $cacheidfile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR .
                md5($url) . 'rest.cacheid';
            if (!file_exists($cacheidfile)) {
                return false;
            }

            $cacheid = unserialize(implode('', file($cacheidfile)));
        }
        $cachettl = $this->config->get('cache_ttl');
        // If cache is newer than $cachettl seconds, we use the cache!
    		if (time() - $cacheid['age'] < $cachettl) {
						return $this->getCache($url);
				}
        return false;
    }

首先我们注意到函数的形参有一个默认值$cacheid = null,然后在第14行的时候调用了这一个函数,但是我们注意到形参中是一个空值,但调用的时候当缓存文件不存时,getCacheId将返回false,那第14行试图访问数组偏移量false,不存在就当然会报错了。所以我们需要提前加一个判断,如果$cacheid存在,我们才可以访问。

if ($cacheid && time() - $cacheid['age'] < $cachettl) {
    		return $this->getCache($url);
	}

然后再运行看看

parallels@parallels-Parallels-Virtual-Platform:~/pcov$ pecl install pcov
Cannot install, php_dir for channel "pecl.php.net" is not writeable by the current user

这个比较容易,给提个权限就ok了。

image-20221009234535867

标签:return,遇到,cacheid,cache,cachettl,pcov,install,安装
From: https://www.cnblogs.com/ivanlee717/p/16774166.html

相关文章

  • podman安装mysql容器
    前言mysql如果正式安装,卸载起来比较麻烦。如果是自己测试用的话,可以用podman拉取一个镜像来使用。这里使用的是mysql5.7版本,对应的docker镜像是mysql:5.7(如果拉取较慢......
  • Ubuntu安装Webmin教程
    Webmin是一个Web托管控制面板,它提供了易于使用的界面来管理类Unix系统。Webmin非常易于使用,一分钟之内就可以轻松地在系统上安装轻量级应用程序,Webmin删除了所有通过命令行......
  • 打jar包中遇到的问题
    1、mvnclean时 Couldnotfindartifact*******解决:所有父工程把子module注释掉,各自执行一次mvncleaninstall,使本地maven仓库有这个工程的依赖,取消注释后重新mvn......
  • Docker 安装 Jenkins 并实现项目自动化部署
    Jenkins是一款开源的持续集成(DI)工具,广泛用于项目开发,能提供自动构建,测试,部署等功能。作为领先的开源自动化服务器,Jenkins提供了数百个插件来支持构建、部署和自动化任何......
  • Linux 上下载安装 RabbitMQ 的方法步骤
    RabbitMQ是一套开源(MPL)的消息队列服务软件,是由LShift提供的一个AdvancedMessageQueuingProtocol(AMQP)的开源实现,由以高性能、健壮以及可伸缩性出名的Erlang写成......
  • Harbor离线安装
    一、安装docker-compose1-1、#安装方式一curl-SLhttps://github.com/docker/compose/releases/download/v2.11.2/docker-compose-linux-x86_64-o/usr/local/bi......
  • 学习笔记274—VC6.0下载和安装图文教程
    MicrosoftVisualC++,(简称VisualC++、MSVC、VC++或VC)是Microsoft公司推出的以C++语言为基础的开发Windows环境程序,面向对象的可视化集成编程系统。它不但具有程序框架自动......
  • 安装nfs之ansible-playbook
    ----name:installnfshosts:alltasks:-name:yumnfsyum:name:nfs-utilsstate:presentwhen:ansible_distribution=="CentOS"......
  • @Devops jenkins安装jenkins的项目构建详解
    文章目录​​Devops​​​​一、jenkins安装步骤​​​​1、安装jdk​​​​2、获取安装包​​​​3、安装​​​​4、配置文件修改​​​​5、启动jenkins​​​​6、浏览......
  • 各种linux安装软件的方式
    ......