【问题标题】:Wrong PHP version returned in OpenshiftOpenshift 中返回了错误的 PHP 版本
【发布时间】:2015-10-07 08:08:39
【问题描述】:

我使用here 提供的说明创建了一个 PHP 应用程序(从头开始)。在/mish/make.sh 中,php 版本为 5.5.18。构建完成后,php信息页面确认版本:5.5.18。

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

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

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

更新

通过与 John Lamb 的电子邮件交流,解决方案是将我的 PATH 导出包含在 build 脚本中,如下所示(请参阅此 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 )

【问题讨论】:

标签: php git composer-php openshift


【解决方案1】:

已编辑,因为我没有足够的评论点数:

您能否发布您的构建挂钩脚本 (.openshift/action_hooks/build)? laobubu 的回复应该已经解决了你的问题。


根据我对您的 bugzilla 错误的回复: 自定义 PHP 二进制文件应位于 $OPENSHIFT_HOMEDIR/app-root/runtime/bin/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
    
  • 等待“make.sh”完成

  • [p55test-jltest.dev.rhcloud.com xxxxxxxxxxxxxxxxxxxxxxxx]\&gt; $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 版本:

  • # 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>
    

【讨论】:

  • 您在电子邮件中建议的解决方案解决了该问题。谢谢。
  • 太棒了!请查看我对该错误的附加回复,特别是您可能感兴趣的自定义购物车开发链接:developers.openshift.com/en/…
【解决方案2】:

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

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

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

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

【讨论】:

  • 它不起作用。就好像没有考虑到命令一样。
【解决方案3】:

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

您需要找出您的新 PHP 构建文件位于哪个文件夹中并在那里执行二进制文件。似乎 PHP 是在 misc 文件夹中构建的,而不是安装到运行时文件夹中。你也可以给它起别名。

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


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

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

【讨论】:

  • 它安装在运行时文件夹中。我已经检查过了。
猜你喜欢
  • 1970-01-01
  • 2016-01-24
  • 2018-08-07
  • 1970-01-01
  • 2013-01-06
  • 1970-01-01
  • 1970-01-01
  • 2011-01-28
  • 2014-03-13
相关资源
最近更新 更多