Search code examples
phpsh

Run phpsh with specific php script


By default phpsh uses system's default PHP, my system it's /usr/local/bin/php, which is php 5.2. How can I run phpsh with my custom php path — /srv/bin/php?


Solution

  • It's not supported by default, but you can quickly add.

    It by applying this patch to your phpsh.py in the src folder:

    --- phpsh.py     2011-05-13 18:16:32.000000000 -0400
    +++ phpsh.py    2013-12-05 14:50:11.906673382 -0500
    @@ -253,6 +253,7 @@
         def __init__(self):
             self.config = ConfigParser.RawConfigParser({
                 "UndefinedFunctionCheck": "yes",
    +            "PathToBinary"    : None,
                 "Xdebug"          : None,
                 "DebugClient"     : "emacs",
                 "ClientTimeout"   : 60,
    @@ -388,6 +389,8 @@
             except Exception, msg:
                self.print_error("Failed to load config file, using default "\
                                 "settings: " + str(msg))
    +       if self.config.get_option("General", "PathToBinary"):
    +           os.environ['PATH'] = self.config.get_option("General", "PathToBinary") + ':' + os.environ['PATH']
             if self.with_xdebug:
                 xdebug = self.config.get_option("Debugging", "Xdebug")
                 if xdebug and xdebug != "yes":
    

    If you want to modify an already installed version, find your pythons site-pages folder and apply the patch on both init.py and phpsh.py in that folder.

    This will add a new configuration variable so in phpsh/config (in /etc/phpsh/config if installed as root, or ~/.phpsh/config if user). In there you can specify the path to your php binary

    PathToBinary: /srv/bin
    

    This is just the path where the binary should be found, not the path binary itself, i.e. /srv/bin/php will not work.