This is the documentation for concrete5 version 5.6 and earlier. View Current Documentation

When I tried to upgrade from 5.6.0.2 to the 5.6.1.2, I got a page full of errors when I hit download.

They were from file.php basically saying "failed to open stream: Permission denied" and pointed to line 71 from file.php. Real obvious, right?

When you see 'permisson denied' or 'not allowed to access', think file ownership (especially if you just installed/moved something).

More recently, a user who FTP-copied C5 to his server got the following error message:

"The script whose uid is 586 is not allowed to access /var/www/tmp owned by uid 505."

In Linux (or Unix), applications can only use the files that belong to them.

Remember that Concrete5 runs on Apache web server, and the user Apache runs on is called 'Daemon', typically.

Often when files are copied onto a server, the file transfer program might be running as root, your user id, (or the user Bitnami if you are using their stack).

In my case the owner of the /updates folder was bitnami while the Apache web service runs as user DAEMON. That won't work. Apache cannot write to files belonging to another user, unless it's running as root. (normally services should not run as root, but I digress)

So in my case at the Linux command prompt I navigated to the htdocs folder and, whilst logged in as root typed the following:

chown daemon updates

This changes the ownership of the /updates folder to the user that the Apache web service is using when it runs. Now that Apache owns the updates folder, it can write files to it.

In my case, once ownership was changed, I went back to the dashboard and the download button worked without error. Up came the screen reminding me to first backup my database (done that, thanks) and a button press later brought me up to 5.6.1.2

This same ownership change may be possible through the graphical file manager of cPanel for those not comfortable with command-line Linux, or through Linux using a graphical file manager (but must have root authority via sudo/gksudo or running file manager as root).

If you remotely connect to your server via SSH, consider instead using a graphical SSH client such as WinSCP. Linux workstations can access remote SSH servers and interact via whatever file manager you use (pretty sure OS-X works same way). In either case, if you have to fiddle around with files on your server, it's much easier not to use the command prompt.

NOTES & CAUTION:

Depending on how the server was setup, the permissons may be different, so proceed with caution, and please look at what they were before you change them. If you start changing permissions incorrectly, things will break and it may create security vulnerabilities (e.g. don't allow user root to own all files on server).

Tips for those new to Linux/Unix:

1) How to translate user number to user name: If it gives a cryptic 'user id' number, you need to view your /etc/passwd file to translate that.

type: cat /etc/passwd

2) View owner of folders/files:

ls -l from the path above the folder

ls -l -d if you are in the folder.

For Example:

On my home test server, I have the bitnami stack, and therefore everything is owned by the user 'bitnami'.

Thus if I go into my /scripts directory and type

ls -l -d

I get:

drwxrwxr-x 2 bitnami bitnami 4096 Nov 15 03:28

In this example bitnami is the group and owner for that folder (typically group and owner are the same).

Permissions are your friends, they keep the bad guys out. However when they break things they would appear to be the bad guy themselves.

Loading Conversation