Hubert_J
Hubert_J

Reputation: 453

yii php framework "Application runtime path is not valid." exception

I tried to make a yii project for testing by executing

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

and when I go to localhost/demo I get en error:

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.

At first I thought that it really isn't writable so I did:

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

didn't work so as the last idea I executed:

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

and I still get the same exception. Any ideas on what might be wrong?

---EDIT---

FFS this drives me nuts

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

and I still can't write files from within php script

Upvotes: 13

Views: 35705

Answers (9)

Dilushan
Dilushan

Reputation: 143

If u r sure file permissions set correctly for the folder and still u getting the error, disabling SElinux or add an exception for SElinux is working if u r using CentOS. edit /etc/selinux/config file for disable SElinux or run this command for add an exception

sudo chcon -t httpd_sys_rw_content_t /path/to/ur/annoying/folder -R

Upvotes: -1

sanju
sanju

Reputation: 14

Changed access of the entire folder of the site by using the following command

sudo chmod -R 777 'name of your website folder'

This will solve the issue.

Upvotes: -1

Karthik
Karthik

Reputation: 1

Change access of the runtime folder. On my case changing rwx rwx rwx in plesk parallel panel for runtime folder works.

Upvotes: -1

When i check it on my server, the 'runtime' folder was missing, so i just upload it on the server and it works. Here is the path to 'runtime' folder yoursite\protected\runtime –

Upvotes: 1

Try to upload 'runtime' folder again on your server, that works for me.

Upvotes: 0

Mohsen Beiranvand
Mohsen Beiranvand

Reputation: 1022

you must config with semanage like this which allow php-fpm write access to directory

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

Upvotes: 1

Irfan
Irfan

Reputation: 59

You have entered a wrong syntax for the chmod command. Try this:

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

Enter a password when you will be prompt.

Important notice:

The asterisk at the end of command line is very important. It means all files in the current directory.

Upvotes: 5

ldg
ldg

Reputation: 9402

Looks like you might have SELinux turned on, which enforces it's own security policies and can be a real pain for web apps and very annoying when it ends up resulting in errors like this. Whenever you have funky permissions problems, it's a good idea to check if you have it set: /usr/sbin/getenforce (or similar, depending on what system you are on).

See: http://www.crypt.gen.nz/selinux/disable_selinux.html for a good overview and how to turn it off (again, the details may vary depending on your OS/kernel version). If it's a test machine not publicly accessible, you can pretty safely turn it off, otherwise, you should read the site above to understand what it does. Most Linux package managers can install files to help you manage the policies for specific apps. On RH/CentOS, you can also use /usr/bin/system-config-securitylevel-tui to turn it on/off.

Upvotes: 7

thaddeusmt
thaddeusmt

Reputation: 15600

That should work... so maybe also try setting your Apache user (usually 'www-data') as the owner of /runtime? Something like:

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

Could be an Apache umask issue also. Check out the Yii forum, which has helpful posts like this one: http://www.yiiframework.com/forum/index.php?/topic/19400-question-about-directoryfile-permissions/

You should NOT have to set your whole project to 777, that is very insecure. I think /assets and /protected/runtime are the only directories that need write permissions (775).

Upvotes: 25

Related Questions