web-dev-qa-db-ja.com

yii phpフレームワーク "アプリケーションのランタイムパスが無効です。"例外

実行してテスト用のyiiプロジェクトを作成しようとしました

/var/www/html/yii/framework/yiic webapp demo

localhost/demoに移動すると、エラーが発生します。

Application runtime path "/var/www/html/demo/protected/runtime" is not valid. 
Please make sure it is a directory writable by the Web server process.

最初、私はそれが本当に書き込み可能ではないと思ったので、私はしました:

chmod 777 /var/www/html/demo/protected/runtime

私が実行した最後のアイデアほどうまくいきませんでした:

chmod 777 -R /var/www/html/demo/

それでも同じ例外が発生します。何が間違っているのかについてのアイデアはありますか?

---編集---

FFSこれは私を狂わせる

drwxrwxrwx. 4 Apache apache 4096 Jun  5 00:06 commands
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 components
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 config
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 controllers
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 data
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 extensions
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 messages
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 migrations
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 models
drwxrwxrwx. 3 Apache apache 4096 Jun  5 00:06 runtime
drwxrwxrwx. 7 Apache apache 4096 Jun  5 00:06 tests
drwxrwxrwx. 5 Apache apache 4096 Jun  5 00:06 views
-rwxrwxrwx. 1 Apache apache   71 Jun  5 00:02 yiic
-rwxrwxrwx. 1 Apache apache  380 Jun  5 00:02 yiic.bat
-rwxrwxrwx. 1 Apache apache  178 Jun  5 00:02 yiic.php

そして私はまだphpスクリプト内からファイルを書くことができません

11
Hubert_J

SELinuxがオンになっている可能性があります。これにより、SELinuxが独自のセキュリティポリシーを適用し、Webアプリにとって非常に苦痛になり、このようなエラーが発生すると非常に煩わしくなります。ファンキーなアクセス許可の問題がある場合は常に、次のように設定されているかどうかを確認することをお勧めします:/usr/sbin/getenforce(または使用しているシステムによっては同様)。

参照: http://www.crypt.gen.nz/selinux/disable_selinux.html 概要とオフにする方法(ここでも、詳細はOS /カーネルのバージョンによって異なる場合があります) )。公開されていないテストマシンの場合は、かなり安全にオフにすることができます。それ以外の場合は、上記のサイトを読んで、その機能を理解する必要があります。ほとんどのLinuxパッケージマネージャーは、特定のアプリのポリシーの管理に役立つファイルをインストールできます。 RH/CentOSでは、/usr/bin/system-config-securitylevel-tuiを使用してオン/オフにすることもできます。

6
ldg

それshould動作する...だから、Apacheユーザー(通常は 'www-data')を/runtimeの所有者として設定してみてください。何かのようなもの:

 chown -R www-data:www-data /var/www/html/demo/protected/runtime

Apache umaskの問題である可能性もあります。 Yiiフォーラムをチェックしてください。このフォーラムには、次のような役立つ投稿があります: http://www.yiiframework.com/forum/index.php?/topic/19400-question- about-directoryfile-permissions /

プロジェクト全体を777に設定する必要はありません。これは、非常に安全ではありません。書き込み権限が必要なディレクトリは/assets/protected/runtimeだけだと思います(775)。

25
thaddeusmt

chmodコマンドに間違った構文を入力しました。これを試して:

Sudo chmod -R 777 ./var/www/*

プロンプトが表示されたら、パスワードを入力します。

重要なお知らせ:

コマンドラインの最後にあるアスタリスクは非常に重要です。これは、現在のディレクトリ内のすべてのファイルを意味します。

5
Irfan

php-fpmがディレクトリへの書き込みアクセスを許可するこのようなsemanageで設定する必要があります

# semanage fcontext -a -t httpd_sys_rw_content_t 'YOUR_PATH_HERE'
# restorecon -v 'YOUR_PATH_HERE'
1

サーバーで確認したところ、「ランタイム」フォルダーが見つからなかったので、サーバーにアップロードするだけで機能します。これが 'runtime'フォルダyoursite\protected\runtimeへのパスです–

'runtime'フォルダをサーバーにもう一度アップロードしてみてください。これでうまくいきます。