This article will cover the solution to the PEAR “Cannot use result of built-in function in write context” issue.

The Issue

If installing a pear package (for instance PHP Code Sniffer), when running:

pear install PHP_CodeSniffer

This error is shown

PHP Fatal error: Cannot use result of built-in function in write context in ...\php\pear\Archive\Tar.php on line 639
Fatal error: Cannot use result of built-in function in write context in ...\pear\Archive\Tar.php on line 639

This error is shown because the function is called by reference.

More details about this issue can be found in this Pull Request.

 

The solution

You might be tempted to execute the following

pear install Archive_Tar

which will result in the same error.

 

Go to the line indicated in the error (639 in this case) and replace:

 $v_att_list = & func_get_args();

with

 $v_att_list = func_get_args();

The above means the func_get_args() isn’t called by reference anymore.

Our recommendation

The above does fix the problem, but we recommend installing the Archive_Tar again so you have the latest working version.

 

Run the following command:

pear install Archive_Tar

This will update your Archive Tar PEAR package.

 

And to install the code sniffer run:

pear install PHP_CodeSniffer

 

4 Comments

  1. VireshIshwar

    Brilliant, and to the point. Worked!

  2. Komal

    Genius fix! Works awesome, thanks!

  3. OGProgrammer

    For AWS ElasticBeanstalk I’ve been running into this. My one liner to replace it is:


    sed -i '/$v_att_list = & func_get_args();
    /c\$v_att_list = func_get_args();'
    /usr/share/pear7/Archive/Tar.php

  4. Gabi DJ

    Hi OGP,

    Thank you for the feedback.

    That’s a great tip!

    The command you provided can be tweaked and could work on a higher number of systems.
    Basically if you know where …/Archive/Tar.php is you can just type in that command with the file you want to change and the job’s done.

    This article purpose was not just to fix the error, but to know what caused it, understand the error and find out how to fix it yourself.

    Your fix is an easier fix, but whoever tries to run that script should know what it’s doing.

    In case of shell commands. For instance, I check all the commands I didn’t hear about with this free service.

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

This site uses Akismet to reduce spam. Learn how your comment data is processed.