朋友们,我试图将我的yii生产应用程序从cloud9 IDE部署到OpenShift,同时这样做,我收到此错误消息,
CException
应用程序运行时路径“/ var / lib / openshift / 51dd48794382ecfd530001e8 / app-root / runtime / repo / php / protected / runtime”无效。请确保它是Web服务器进程可写的目录。
即使我在Cloud9 IDE上将文件夹权限更改为775(chmod -R 775目录)并再次部署,但同样的错误即将到来,请帮帮我
谢谢
答案 0 :(得分:1)
这是一个老问题,但我刚刚碰到了同样的问题。
当您解压缩“yii”包时,有几个文件夹为空,“framework / protected / runtime”就是其中之一。
要部署到OpenShift,您需要将yii包提交到git,并将提交推送到OS。但是,git不会提交空文件夹,因此不会在部署中创建它们。您需要在这些文件夹中创建一些文件,并在提交/推送之前将这些文件添加到您的git仓库中。通常的程序是向这些文件夹添加一个“.gitkeep”文件(它只是一个空的虚拟文件,所以git会看到这些文件夹)。
这可以解决这个特殊错误。
问候。
答案 1 :(得分:0)
可能是由于给予该文件夹的所有权。 检查Web服务器用户组,该目录是否可写,以及更改平台时Web服务器的影响。
希望我的建议有用。
答案 2 :(得分:0)
对于Yii应用程序,资产和受保护/运行时文件夹是特殊的。首先,两个文件夹必须由服务器(httpd)进程存在和写入。其次,这两个文件夹包含临时文件,应该被git忽略。如果这些临时文件已提交,则在普通服务器(而非Openshift服务器)中部署将导致git合并冲突。所以我将这两个文件夹放在.gitignore中:
php/assets/
php/protected/runtime/
在我的部署中,我添加了一个由openshift调用的shell脚本,在$ OPENSHIFT_DATA_DIR下创建两个文件夹,并在应用程序的文件夹中创建两个文件夹的符号链接。这是我从here改编的shell脚本(.openshift / action_hooks / deploy)的内容:
#!/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
shell脚本确保在openshift部署后在每个齿轮上创建临时文件夹。默认情况下,新目录的右边是u + rwx,它可以被httpd进程写入,因为齿轮运行httpd作为齿轮用户(不是apache或其他东西)。