4

Are shell commands considered a legitimate programming interface? Specifically, is there anything wrong with executing bash shell commands on a linux application server from PHP pages or CGI files? Does this introduce efficiency or security issues?

Thanks

2
  • There are two kinds of people. Ones who use a tool and ones who asks if it legitimate Commented Dec 26, 2010 at 23:43
  • Anonymous close voters are the bane of SO... please explain yourselves! Commented Dec 27, 2010 at 0:12

2 Answers 2

6

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.

Sign up to request clarification or add additional context in comments.

5 Comments

Sure. To process an image with ugly GD would be Ok, and with swift external imagemagick would be slow, haha
Using an external ImageMagick may well be superior from a memory usage standpoint as well, as processing images internally can explode the memory footprint of web servers, in fact, I've seen that happen. I did say that "sometimes it's the best way to solve a problem".
another example will be ffmpeg, not sure how to survive without shell
Good points here- thanks. Where can I go to learn more about taint checking in this scenario?
In the case of ImageMagick it can also be necessary to call the command line version since not all features of the various commands actually work from all languages.
0

If secure application and server, no.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.