 <p>SVN command line errors go to stderr, not stdout, which is why you aren't able to see them. What you want to do is redirect stderr to stdout and then <code>print_r($output)</code> to determine the cause of the error. </p> <pre><code>exec('svn commit &lt;stuff&gt; 2&gt;&amp;1', $output, $returnStatus); if ( $returnStatus ) { print_r($output); } </code></pre> <p>Sample output:</p> <pre><code>Array ( [0] =&gt; svn: Commit failed (details follow): [1] =&gt; svn: '/path/to/&lt;stuff&gt;' is not under version control ) </code></pre> <p>This is not ideal because it mixes stderr with stdout when it would otherwise be unnecessary, but I don't know of another way to get the desired output in this case. If someone else does, please comment.</p> <p><strong>Note:</strong> The third parameter to <a href="http://us3.php.net/manual/en/function.exec.php" rel="nofollow noreferrer">exec(...)</a> is the return <strong>status</strong>, not the error message, so you need to tweak your code accordingly for that as well.</p> <p>If the error output after making the <code>2&gt;&amp;1</code> modification doesn't help solve the root cause of your problem, please post the new output here.</p> <p><strong>Edit after new information:</strong></p> <p>Did you upload this SVN working copy to your server from somewhere else? That would explain this error.</p> <p>If I check out a working copy from my local repository, upload it to my remote server, and then try to commit, I get the same error.</p> <p>If that's the case, you need to execute the "svn checkout" of the working copy <strong>on the server running the PHP script</strong> in order to be able to commit to it. If that server can't communicate with the repository's server, then that's a whole other problem.</p>