更改目录不需要';不能在apache调用的php脚本中持久化

更改目录不需要';不能在apache调用的php脚本中持久化,php,apache,shell-exec,Php,Apache,Shell Exec,我正在尝试构建一个脚本,在我的服务器上进行一些更改,我可以通过访问网页调用该脚本 但是,关于apache用户的权限,我遇到了一些困难,他们试图在我的php脚本中运行shell命令。根据您的服务器,用户可能是wwwrun或wwwdata 例如,我想将目录更改为。/subdomains/$url/httpdocs/,但如果我运行后续的pwd,我没有更改目录。我可以列出其他目录,但文件夹上的权限阻止我进行大多数更改 但是,我不能只是手动进入服务器并对文件夹进行chmod,因为在我进入服务器进行其他更改

我正在尝试构建一个脚本,在我的服务器上进行一些更改,我可以通过访问网页调用该脚本

但是,关于apache用户的权限,我遇到了一些困难,他们试图在我的php脚本中运行shell命令。根据您的服务器,用户可能是wwwrun或wwwdata

例如,我想将目录更改为
。/subdomains/$url/httpdocs/
,但如果我运行后续的
pwd
,我没有更改目录。我可以列出其他目录,但文件夹上的权限阻止我进行大多数更改

但是,我不能只是手动进入服务器并对文件夹进行chmod,因为在我进入服务器进行其他更改之前,系统应该自动生成文件夹

起初,我尝试编辑/etc/sudoers,这对我的机器上的可执行文件有效,我实际上知道这些文件的位置。然而,尽管我进行了所有的搜索,我还是找不到BaSH内置可执行文件(如cd)的位置。但是,我觉得这是在转移注意力。将这些函数添加到我的sudoers文件中可能对安全性有害

也许ApacheSuexec是一个不错的选择。但我在服务器管理方面还不是很先进,而且我还没有找到一份足够的指南,让我这样的技术水平的人来安装和设置它

我还尝试编写一个shell脚本,我可以从第一个php脚本调用它,但我很难让它正常工作。我将继续使用它,但我觉得我能够而且应该能够使原始文件正常工作


对不起,这是文字墙。谢谢你的帮助。

我用它为我拥有的约会网站的每个注册用户创建单独的目录,因此,在他们上传图像并通过所有必要的处理和安全措施后,它会将其转储到具有该用户id的文件中。这样,我就不用搜索数千张图像,而只需根据用户id搜索一个小目录。我就是这样做的。也许对你有帮助

    //path has to already exist with 773 perm
    $path = 'path/to/dir';

    //name of new dir, I use user ids for this
        $dirname = '0123456789';

    //create folder for user if one doesn't exist
    //for this to work; had to edit /etc/sudoer with: sudo visudo -s command
    //added: www-data ALL=(ALL) NOPASSWD: ALL
    $thisdir = getcwd();
    $dir = $thisdir ."/".$path."/".$dirname;

    if(!is_dir($dir)){

            mkdir($dir, 0731);

            //required to change dir perm to 755
            $old = umask(0);
            chmod($dir, 0731);
            umask($old);

    }

我认为我遇到的很多困难是,我试图进入web根目录之上的目录。