skip to Main Content

Since PHP 7.4.1 there is pear error with the newest version even though they said its fixed.

Example:
if you try to install any package using the "pecl" a warning error returns with the message:

Notice: Trying to access array offset on value of type bool in PEAR/REST.php on line 187
    PHP Notice:  Trying to access array offset on value of type bool in /usr/share/php/PEAR/REST.php on line 187

The repositories have already been updated, but the problem persists

3

Answers


  1. I met the same issue.

    Notice: Trying to access array offset on value of type bool in REST.php on line 181

    PEAR Version: 1.10.1
    PHP Version: 7.4.1 
    Zend Engine Version: 3.4.0 
    Running on: Darwin kairee-mbp 19.2.0 Darwin Kernel Version 19.2.0
    

        function useLocalCache($url, $cacheid = null)
        {
            if (!is_array($cacheid)) {
                $cacheid = $this->getCacheId($url);
            }
    
            $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;
        }
    
        /**
         * @param string $url
         *
         * @return bool|mixed
         */
        function getCacheId($url)
        {
            $cacheidfile = $this->config->get('cache_dir') . DIRECTORY_SEPARATOR .
                md5($url) . 'rest.cacheid';
    
            if (!file_exists($cacheidfile)) {
                return false;
            }
    
            $ret = unserialize(implode('', file($cacheidfile)));
            return $ret;
        }
    

    You may notice that when the cached file not exists, getCacheId will return false. In line 181, the code if (time() - $cacheid['age'] < $cachettl) { is trying to access array offset on false.

    I add a condition to this line to fix it:

            // If cache is newer than $cachettl seconds, we use the cache!
    -       if (time() - $cacheid['age'] < $cachettl) {
    +       if ($cacheid && time() - $cacheid['age'] < $cachettl) {
                return $this->getCache($url);
            }
    
    Login or Signup to reply.
  2. I met with the same problem while trying to install xdebug using PECL. Something about that code block that you quoted is causing problems. I think that’s a problem somehow related to MacOS Catalina, saw three people with that error and all were using newest MacOS.

    As a workaround I commented the ‘if’ block that you quoted. That seems to get the job done, as I could install xdebug normally after doing that.

    Login or Signup to reply.
  3. I had the same issue and creating the temporary pear cache directory solved it.

    mkdir -p /tmp/pear/cache
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search