2013-07-10 112 views
1

朋友,我试图部署从CLOUD9 IDE到OpenShift,而我的警予生产应用程序这样做,我得到这个错误信息,在OpenShift上部署yii应用程序时发生CException错误?

CException 

应用程序运行时路径“的/ var/lib中/ openshift/51dd48794382ecfd530001e8 /应用-root/runtime/repo/php/protected/runtime“无效。请确保它是可由Web服务器进程写入的目录。

即使我改变文件夹权限上CLOUD9 IDE 775(搭配chmod -R 775目录),然后重新部署,但同样的错误来了,请帮我出

谢谢

回答

0

可能由于给予文件夹的所有权。 检查Web服务器用户组,该目录是否可写,以及当我们更改平台时,什么会影响Web服务器。

希望我的建议会有用。

1

这是一个古老的问题,但我最近碰到了同样的问题。

提取“yii”包时,有几个文件夹是空的,“framework/protected/runtime”就是其中之一。

要部署到OpenShift,您需要将yii包提交到git,然后将提交推送到OS。但是,git不会提交空文件夹,所以它们不会在您的部署中创建。您需要在这些文件夹内创建一些文件,然后在提交/推送前将这些文件添加到您的git repo中。通常的做法是为这些文件夹添加一个“.gitkeep”文件(它只是一个空的虚拟文件,所以git会看到这些文件夹)。

这将解决这个特定的错误。

问候。

0

对于Yii应用程序,资产和受保护/运行时文件夹是特殊的。首先,这两个文件夹必须存在并可由服务器(httpd)进程写入。其次,这两个文件夹包含临时文件,应该被git忽略。如果这些临时文件已提交,则在普通服务器(而不是Openshift服务器)中进行部署会导致git合并冲突。所以我就把这两个文件夹中的.gitignore:

php/assets/ 
php/protected/runtime/ 

在我的部署,我添加了一个shell脚本,通过openshift调用,创建在$ OPENSHIFT_DATA_DIR这两个文件夹,并创建应用程序的文件夹符号链接到他们两个。这是壳脚本(.openshift/action_hooks /部署),其余适于从here的内容:

#!/bin/bash 
if [ ! -d $OPENSHIFT_DATA_DIR/runtime ]; then 
mkdir $OPENSHIFT_DATA_DIR/runtime 
fi 
# remove symlink if already exists, fix problem when with gears > 1 and nodes > 1 
rm $OPENSHIFT_REPO_DIR/php/protected/runtime 
ln -sf $OPENSHIFT_DATA_DIR/runtime $OPENSHIFT_REPO_DIR/php/protected/runtime 

if [ ! -d $OPENSHIFT_DATA_DIR/assets ]; then 
mkdir $OPENSHIFT_DATA_DIR/assets 
fi 

rm $OPENSHIFT_REPO_DIR/php/assets 
ln -sf $OPENSHIFT_DATA_DIR/assets $OPENSHIFT_REPO_DIR/php/assets 

外壳脚本可以确保上openshift部署后各齿轮所创建的临时文件夹中。默认情况下,一个新目录的权利是u + rwx,并且它由httpd进程写入,因为齿轮运行httpd作为齿轮用户(不是apache或其他)。

相关问题