PHP process output (?) that breaks bash completion

Bug #514989 reported by lexsimon on 2010-01-31
32
This bug affects 7 people
Affects Status Importance Assigned to Milestone
php5 (Ubuntu)
Low
Unassigned

Bug Description

Binary package hint: php5

Hello,

I first tried to post : http://ubuntuforums.org/showthread.php?p=8734334 and after recompiling from php.net sources, I'm now convinced there is something wrong in patches that are applied or in some compilation option.

Goal : complete the command line ./myscript.sh.
Steps :
- create die.php, completion.sh and myscript.sh in current folder using the following code sample
- chmod 755 myscript.sh
- source completion.sh in current bash
- try to complete ./myscript.sh : it works
- uncomment die.php call in completion.sh
- source completion.sh again
- try to complete ./myscript.sh : it does not work. A simple call to php process breaks the thing. Only with ubuntu PHP packages (tested on 8.04 and 9.10 releases ;

== die.php ==

<?php
// Not so much ;)
die();

== completion.sh ==

#!/bin/bash

_completemyscript()
{
        local cur cmds cmdOpts
        cur="${COMP_WORDS[COMP_CWORD]}"

        # Normally, nothing should happened with this line
        #php die.php > /tmp/somefile 2>&1

        # Static completion
        COMPREPLY=( $( compgen -W "a b c d" -- "${cur}" ) )
        return 0
}

complete -F _completemyscript -o "default" myscript.sh

== myscript.sh ==

#!/bin/bash
echo "Hello World"

Ondřej Surý (ondrej) wrote :

Hi,

could you provide versions of Ubuntu you are running and version of php5?

Also list of installed modules would be great, there are known bugs; one in mysql, when running on multiple cores, and second in pgsql+curl modules.

Ondrej

Hi and thank you for answering :),

Sorry, I thought I gave the Ubuntu versions : I tried 8.04 and 9.10.
The thing can be reproduced using a fresh 9.10 server installation + OpenSSH server profile and additional php5-cli package. I didn't tried without SSH because I always use it but I do think there is some dependency ?

I give the packages from this install as attachment (packages.txt)

Hope you will be able to find something because compilation stuff is not my specialty and I have a lot of PHP business logic that is behind this completion and makes the tool I code very more usable ...

Regards,

Le 31 janv. 2010 à 20:19, Ondřej Surý a écrit :

> Hi,
>
> could you provide versions of Ubuntu you are running and version of
> php5?
>
> Also list of installed modules would be great, there are known bugs; one
> in mysql, when running on multiple cores, and second in pgsql+curl
> modules.
>
> Ondrej
>
> --
> PHP process output (?) that breaks bash completion
> https://bugs.launchpad.net/bugs/514989
> You received this bug notification because you are a direct subscriber
> of the bug.
>
> Status in “php5” package in Ubuntu: New
>
> Bug description:
> Binary package hint: php5
>
> Hello,
>
> I first tried to post : http://ubuntuforums.org/showthread.php?p=8734334 and after recompiling from php.net sources, I'm now convinced there is something wrong in patches that are applied or in some compilation option.
>
> Goal : complete the command line ./myscript.sh.
> Steps :
> - create die.php, completion.sh and myscript.sh in current folder using the following code sample
> - chmod 755 myscript.sh
> - source completion.sh in current bash
> - try to complete ./myscript.sh : it works
> - uncomment die.php call in completion.sh
> - source completion.sh again
> - try to complete ./myscript.sh : it does not work. A simple call to php process breaks the thing. Only with ubuntu PHP packages (tested on 8.04 and 9.10 releases ;
>
> == die.php ==
>
> <?php
> // Not so much ;)
> die();
>
> == completion.sh ==
>
> #!/bin/bash
>
> _completemyscript()
> {
> local cur cmds cmdOpts
> cur="${COMP_WORDS[COMP_CWORD]}"
>
> # Normally, nothing should happened with this line
> #php die.php > /tmp/somefile 2>&1
>
> # Static completion
> COMPREPLY=( $( compgen -W "a b c d" -- "${cur}" ) )
> return 0
> }
>
> complete -F _completemyscript -o "default" myscript.sh
>
> == myscript.sh ==
>
> #!/bin/bash
> echo "Hello World"
>
> To unsubscribe from this bug, go to:
> https://bugs.launchpad.net/ubuntu/+source/php5/+bug/514989/+subscribe

--
Alexandre Simon
http://alex.zybar.net

lexsimon (lexsimon) wrote :

Hi and thank you for answering :),

Sorry, I thought I gave the Ubuntu versions : I tried 8.04 and 9.10.
The thing can be reproduced using a fresh 9.10 server installation + OpenSSH server profile and additional php5-cli package (5.2.10.dfsg.1-2ubuntu6.4). I didn't tried without SSH because I always use it but I do think there is some dependency ?

I give the packages from the 9.10 install as attachment (packages.txt).

Chuck Short (zulcss) on 2010-02-01
Changed in php5 (Ubuntu):
importance: Undecided → Low
status: New → Confirmed
teles (teles-php) wrote :

Hello,
So it's a bug :)
I search the reason for a while and found nothing.
Any idea of resolution date? (I hope soon :))

Thanks!

MaximeC (maxime-webmaster) wrote :

Hi
any solution for this bugs ??

TY
Max

H (matthieu-houver) wrote :

:(
I'm also waiting for a fast resolution....any news ?

Hi,

This bug also deeply impacts our production since it breaks valuable features.

Please be kind to quickly fix this issue.

Raphael Geissert (atomo64) wrote :

Without testing it at all in Ubuntu, this sounds like the libedit bug (which I don't know how/why somebody at Ubuntu assumed it was fixed). Calling php from a compgen script work fine in Debian, another indication that it might be the libedit bug.

lexsimon (lexsimon) wrote :

You're right: I took the source packages and modified debian/rules, removing --with-libedit before to compile it : it solves the problem.

chEbba (j-pam-3) wrote :

Any news here? It's almost 2 years for this bug which is really annoying

Florian Dorn (florian-dorn) wrote :

I am affected by this bug as well. I'm running 10.04.

Florian Dorn (florian-dorn) wrote :

After some more looking I've found a workaround for this problem, described here:
http://clock.co.uk/tech-blogs/bash-completion-problems-with-option-lists-generated-by-php-

The trick is to prefixed the php script with a blank echo.

lexsimon (lexsimon) wrote :

The trick is more about the pipe and PHP "knowing" no terminal interactions will be (and then no readline library call i assume). I confirm it is a way to get it working ; good news :)

lexsimon (lexsimon) wrote :

(hmm ... readline ... libedit ... sorry)

Florian Dorn (florian-dorn) wrote :

You're right. It's not the echo but actually the piping. Thanks to Paul Serby for posting the workaround.

Peter Newman (peternewman) wrote :

For anyone else who's hit this, the page has now moved to http://www.clock.co.uk/blog/bash-completion-problems-with-option-lists-generated-by-php it's also still available in Google's cache here:
http://webcache.googleusercontent.com/search?q=cache:n-AfIM1nmMYJ:http://clock.co.uk/blog/bash-completion-problems-with-option-lists-generated-by-php%2Bbash+completion+problems+with+option+lists+generated+by+php&rls=com.microsoft:en-gb:IE-SearchBox&oe=&gfe_rd=cr&gws_rd=cr&hl=en&ct=clnk

And the key info (in case it vanishes again) is:
  targets=`echo ""| maiden -b | sort -u`
  COMPREPLY=( $(compgen -W "${targets}" -- ${cur}) )
  return 0

i.e. add echo "" | before your PHP script.

Robie Basak (racb) wrote :

It sounds like this is either an upstream bug in either libedit or PHP's libedit support, or is behaviour by design that is causing an unintended interaction with bash completion. This should be sent upstream to reach a resolution; I don't see that any action can be taken in Ubuntu to fix it.

tags: added: needs-upstream-report
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers