【问题标题】:CException Error while deploying yii application on OpenShift?在 OpenShift 上部署 yii 应用程序时出现 CException 错误?
【发布时间】:2013-07-10 12:22:33
【问题描述】:

朋友们,我尝试将我的 yii 生产应用程序从 cloud9 IDE 部署到 OpenShift 时,我收到了这个错误消息,

 CException

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

即使我在 Cloud9 IDE 上将文件夹权限更改为 775 (chmod -R 775 directory) 并再次部署,但出现同样的错误。

【问题讨论】:

    标签: yii file-permissions openshift cloud9-ide


    【解决方案1】:

    这是一个老问题,但我最近才遇到同样的问题。

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

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

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

    【讨论】:

      【解决方案2】:

      这可能是由于文件夹的所有权。 检查网络服务器用户组,该目录是否可写,以及当我们更改平台时对网络服务器有何影响。

      希望我的建议对你有用。

      【讨论】:

        【解决方案3】:

        对于 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 进程写入,因为 gear 以 gear 用户(而不是 apache 或其他)运行 httpd。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-03-25
          • 1970-01-01
          • 2010-10-29
          • 2018-05-30
          • 1970-01-01
          • 1970-01-01
          • 2013-01-18
          相关资源
          最近更新 更多