views:

283

answers:

3

Hey guys, I have two scripts.

  1. running an update and calling shell_exec('svn update') and shell_exec('svn st')
  2. running a mysqldump shell_exec('mysqldump params')

The svn script is not running the update command, the svn st is printing results but not the svn update

I tried to declare parameters when calling svn update eg 'svn update ' . dir . ' --username myuser --password mypasswd --non-interactive'; -- still nothing Played with most of the params

If this is something related to binaries/permissions/groups, I don't see it. The mysqldump command works fine and is producing a file, so why isn't the svn updating the filesystem?

Please do not advise using core SVN classes in PHP. This is not an option, I don't have complete control over the server and the module is not available.

Thanks for your help,

-hbt

PS: important thing to mention here. The scripts works when called via the command line. It only fails when called via a web browser.

A: 

It might be permission problem: script called via a web browser runs under different username than svn working directory's owner, therefore it has read-only access. Read-only access should be enough for svn status to execute, but not for svn update (though in this case there should be an error like "svn: Can't open file '.svn/lock': Permission denied").

Alexander Konstantinov
No error but fixed with permissions. Posted answer below.Thanks!
hbt
A: 

Have you tried the PECL svn extension? You don't need to use shell_exec for this.

Artefacto
Unfortunately, the svn extension is not available on the server.
hbt
A: 

OK. I got it. It is an issue with permissions. The .svn directory must have the right permissions because the svn update command is using those directories to write stuff.

So! ---Make sure you run all chmod commands as sudo or root----

  1. run a chmod 777 on .svn directory
  2. run an svn update via command line
  3. call script

If nothing. You must run chmod 777 recursively for all .svn directories then run another svn update

Still nothing?

Make sure you don't have two svn clients In my case, the svn client used by the UI is different from the svn (command line) If you have two clients, make sure they are running the same version Or update your script to call the client directly.

Still nothing?

Run a chmod 777 -R * svn update and try again

If you can make it work with another set of permissions, please let me know. I know that 777 is not ideal, but I can't make it work with something lower.

Thanks again guys.

hbt