Ошибка CException при развертывании приложения yii в OpenShift?

Друзья, я пытался развернуть свое производственное приложение yii из IDE cloud9 в OpenShift, пока делал это, я получил это сообщение об ошибке,

 CException

Путь среды выполнения приложения "/var/lib/openshift/51dd48794382ecfd530001e8/app-root/runtime/repo/php/protected/runtime" недействителен. Пожалуйста, убедитесь, что это каталог, доступный для записи процессу веб-сервера.

Даже когда я изменил права доступа к папке на 775 (chmod -R 775 directory) в среде Cloud9 IDE и снова развернул ее, я получаю ту же ошибку.


person Geek TRK    schedule 10.07.2013    source источник


Ответы (3)


Это старый вопрос, но я совсем недавно столкнулся с той же проблемой.

Когда вы распаковывали пакет «yii», несколько папок были пусты, одной из них была «framework/protected/runtime».

Для развертывания в OpenShift вам необходимо зафиксировать пакет yii в git и отправить фиксацию в ОС. Но git не будет фиксировать пустые папки, поэтому они не создаются в вашем развертывании. Вам нужно создать какой-то файл внутри этих папок и добавить эти файлы в репозиторий git перед фиксацией/нажатием. Обычная процедура заключается в добавлении файла «.gitkeep» в эти папки (это просто пустой фиктивный файл, поэтому git увидит эти папки).

Это исправит эту конкретную ошибку.

person yivi    schedule 12.10.2013

Это может быть связано с правом собственности на папку. Проверьте группу пользователей веб-сервера, доступен ли этот каталог для записи, а также что влияет на веб-сервер, когда мы меняем платформу.

Надеюсь, мое предложение будет полезным.

person Onkar Janwa    schedule 27.07.2013

Для приложений Yii ресурсы и папки protected/runtime являются особыми. Во-первых, обе папки должны существовать и быть доступными для записи процессу сервера (httpd). Во-вторых, эти две папки содержат временные файлы, и git должен их игнорировать. Если эти временные файлы будут зафиксированы, развертывание на обычных серверах (не на серверах Openshift) вызовет конфликты слияния git. Итак, я поместил эти две папки в .gitignore:

php/assets/
php/protected/runtime/

В моем развертывании я добавляю сценарий оболочки, который будет вызываться openshift, создавая обе папки в $OPENSHIFT_DATA_DIR и создавая символическую ссылку на них обоих в папках приложения. Это содержимое сценария оболочки (.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

Сценарий оболочки обеспечивает создание временных папок на каждом механизме после развертывания openshift. По умолчанию правами нового каталога являются u+rwx, и он стал доступным для записи процессом httpd, потому что механизм запускает httpd как пользователь механизма (а не apache или что-то еще).

person YudhiWidyatama    schedule 06.07.2014