dongtazu3080 2014-03-12 05:58 采纳率: 100%
浏览 31

系统命令不在PHP中执行

I have a php script where some system commands are running fine and others are not. The commands that are not running can be copy and pasted to the shell and be ran just fine.

System: OSX 10.9.2 (everything is updated).

I have tried many different commands like the following.

backticks, exec(), shell_exec(), system(), passthru()

This command works fine.

exec("drush si -y --db-url=mysql://user:pass@localhost:3306/dbname");

But these commands do not run.

exec("drush sql-sync @remote.staging @dev.anme -y");
exec("git ls-remote --heads git@github.com:blablaname/name.git");

The commands that do not run can be copy and pasted into the shell and run great. I have made sure the script is being ran in the proper directory using the getcwd() function.

  • 写回答

1条回答 默认 最新

  • duanbei6427 2014-03-12 06:13
    关注

    If you call php program having exec() from web browser,It executes as www user. So www user may not have privilege to connect/sync to remote host.That's why it works on localhost and failing on remote host.

    So one solution is

    1)save the command as bash script
    2)set uid bit(It can be root or user having sufficient privilege).
    3)execute that bash script by exec so that it will run as previlged user.
    4)You should ip restrict your program since setuid is dangerous.

    setuid

    评论
    编辑
    预览

    报告相同问题?

    手机看
    程序员都在用的中文IT技术交流社区

    程序员都在用的中文IT技术交流社区

    专业的中文 IT 技术社区,与千万技术人共成长

    专业的中文 IT 技术社区,与千万技术人共成长

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

    客服 返回
    顶部