在Openshift中返回错误的PHP版本

时间:2015-07-17 14:49:43

标签: php git composer-php openshift

我使用可用指令here创建了一个PHP应用程序(从头开始)。在/mish/make.sh中,php版本是5.5.18。构建之后,php信息页面确认版本:5.5.18。

然而,当我使用SSH登录我的Openshift应用程序时,php --version以错误的构建日期返回5.3.3:

enter image description here

当我尝试install Composer on Openshift时,我发现了这个问题。当git推回到Openshift时,我收到了一条错误消息:

enter image description here

我不知道问题是与DYI墨盒有关还是与Openshift本身有关。有谁知道吗?

更新

通过与John Lamb的电子邮件交流,解决方案是在build脚本中包含我的PATH导出,如下所示(请参阅此question):

#!/bin/bash

export PATH=${OPENSHIFT_HOMEDIR}/app-root/runtime/bin/:${PATH}

export COMPOSER_HOME="$OPENSHIFT_DATA_DIR/.composer"

if [ ! -f "$OPENSHIFT_DATA_DIR/composer.phar" ]; then
    curl -s https://getcomposer.org/installer | php -- --install-dir=$OPENSHIFT_DATA_DIR
else
    php $OPENSHIFT_DATA_DIR/composer.phar self-update
fi

( unset GIT_DIR ; cd $OPENSHIFT_REPO_DIR ; php $OPENSHIFT_DATA_DIR/composer.phar install )

3 个答案:

答案 0 :(得分:1)

您构建的PHP版本不是活动/已使用的版本。

您需要找出新PHP构建所在的文件夹,并在那里执行二进制文件。似乎PHP构建在misc文件夹中,而不是安装到运行时文件夹中。您也可以使用别名。

PHP应该进入运行时文件夹,例如${OPENSHIFT_HOMEDIR}/app-root/runtime/php5/bin/php

快速浏览一下您的脚本会发现:

  • 您在export OPENSHIFT_RUNTIME_DIR=${OPENSHIFT_HOMEDIR}/app-root/runtime中定义/misc/common.sh
  • 你需要检查一下,PHP登陆运行时文件夹(它是misc吗?)
  • 没有PHP的别名,例如alias php='${OPENSHIFT_RUNTIME_DIR}/php5/bin/php'

答案 1 :(得分:1)

在终端中运行which php将产生/usr/bin/php,这意味着PHP 5.3.3来自系统,而不是您自己的构建。

如果您想使用自己的PHP,请运行以下命令:

export PATH=${OPENSHIFT_HOMEDIR}/app-root/runtime/bin/:${PATH}

如果您正在使用openshift挂钩(在.openshift/action_hooks下),请尝试将该命令添加到挂钩脚本中。

答案 2 :(得分:1)

编辑,因为我没有足够的评论意见:

您可以发布构建钩子脚本(.openshift/action_hooks/build)吗? laobubu的回答应该已经解决了你的问题。

从我对你的bugzilla bug的回复中: 应该在$OPENSHIFT_HOMEDIR/app-root/runtime/bin/php

找到自定义PHP二进制文件

以下是我采取的步骤:

  • # rhc app-create p55test diy-0.1 --from-code'https://github.com/laobubu/openshift-php5.5-cgi-apache.git'

    Application Options
    -------------------
    Domain:      jltest
    Cartridges:  diy-0.1
    Source Code: https://github.com/laobubu/openshift-php5.5-cgi-apache.git
    Gear Size:   default
    Scaling:     no
    
    Creating application 'p55test' ... done
    
      Disclaimer: This is an experimental cartridge that provides a way to try unsupported languages, frameworks, and middleware on OpenShift.
    
    Your application 'p55test' is now available.
    
      URL:        http://p55test-jltest.dev.rhcloud.com/
      SSH to:     xxxxxxxxxxxxxxxxxxxxxxxx@p55test-jltest.dev.rhcloud.com
    
      Git remote: ssh://xxxxxxxxxxxxxxxxxxxxxxxx@p55test-jltest.dev.rhcloud.com/~/git/p55test.git/
    
    Run 'rhc show-app p55test' for more details about your app.
    
  • # curl 'http://p55test-jltest.dev.rhcloud.com/'

    <html>
    <head>
    <title>Installed</title>
    </head>
    <body>
    <h1>Installed</h1>
    <p>You just created one amazing PHP5.5+Apache app.</p>
    <h2>Next...</h2>
    <p>
    <p>Follow the instruction on <a href=https://github.com/laobubu/openshift-php5.5-cgi-apache>https://github.com/laobubu/openshift-php5.5-cgi-apache</a>.
    <p>You can refresh this page to check if the world is ready.
    <p><a href=?doitnow>Come on, robot, you can do it automatically...</a><p>
    </p></body></html>
    
  • # curl 'http://p55test-jltest.dev.rhcloud.com/?doitnow'

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>302 Found</title>
    </head><body>
    <h1>Found</h1>
    <p>The document has moved <a href="./?working">here</a>.</p>
    <hr>
    <address>Apache/2.2.15 (Red Hat) Server at p55test-jltest.dev.rhcloud.com Port 80</address>
    </body></html>
    
  • # rhc ssh p55test

    [p55test-jltest.dev.rhcloud.com xxxxxxxxxxxxxxxxxxxxxxxx]\> top
    
  • 等待&#39; make.sh&#39;完成

  • [p55test-jltest.dev.rhcloud.com xxxxxxxxxxxxxxxxxxxxxxxx]\> $OPENSHIFT_HOMEDIR/app-root/runtime/bin/php --version

    PHP 5.5.18 (cli) (built: Jul 22 2015 10:33:49)
    Copyright (c) 1997-2014 The PHP Group
    Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies
    

此外,由于我关闭了票证,因此我意识到您可以验证PHP实际运行代码的PHP版本,如下所示:

  • # curl 'http://p55test-jltest.dev.rhcloud.com/?phpinfo'

    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>302 Found</title>
    </head><body>
    <h1>Found</h1>
    <p>The document has moved <a href="./15541_PHPINFO_TEMP.php">here</a>.</p>
    <hr>
    <address>Apache/2.2.15 (Red Hat) Server at p55test-jltest.dev.rhcloud.com Port 80</address>
    </body></html>
    
  • # curl 'http://p55test-jltest.dev.rhcloud.com/15541_PHPINFO_TEMP.php' | grep -i 'php version'

    ...snip...
    <h1 class="p">PHP Version 5.5.18</h1>
    <tr><td class="e">PHP Version </td><td class="v">5.5.18 </td></tr>