Sometimes OK, but...
Sometimes it's the best way to solve a problem.
But possible issues are:
Security
Look out for code injection if you aren't doing taint checking.
Performance
Running shell commands will involving forking the PHP interpreter and executing complex and relatively slow system calls. This is OK for a lightly loaded server but won't work for a busy site.
Synchronization
Ensuring that things happen in the right order avoids well-known problems called lost updates, dirty reads, and incorrect summaries. While shell commands are not by themselves a cause of any of these things, running them asynchronously can be, and increasing the complexity of your system will make it harder to analyze.