我使用可用指令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的电子邮件交流,解决方案是在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 )
答案 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
。 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
以下是我采取的步骤:
# 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>