我正在尝试使用PHPshell_exec
命令安装composer
,如composer官方网站中所述。
我的服务器linux是centOS 6
。
shell_exec('curl -sS https://getcomposer.org/installer | php');
/*
* OR
*/
shell_exec('php -r "readfile('https://getcomposer.org/installer');" | php');
但是存在权限错误:
> Downloading...
>Could not create file /myfolder/composer.phar
>
> fopen(/myfolder/composer.phar): failed to open stream: Permission denied Download failed:
>
> fopen(/myfolder/composer.phar): failed to open stream:
>
> Permission denied fwrite() expects parameter 1 to be
> resource, boolean given
>Downloading... Could not create file to open stream: composer.phar:
>
>etc...
因此,我尝试使用以下命令将用户更改为root用户:
shell_exec('su -root; myPass; whoami');
//And
shell_exec('su - root; myPass; whoami');
//And
shell_exec('su -u root -p myPass; whoami');
whoami
再次返回apache
用户apache
似乎没有安装composer和创建目录的权限,所以我尝试在以前的命令之后安装compose器,但仍然存在同样的问题。
你能告诉我我的命令有问题吗?或者出了什么问题?
提前感谢
您不能以这种方式为su
提供密码。事实上,我认为根本没有办法(sudo
有办法)
但是,如果仅仅是出于安全考虑,提升到根目录是一个非常糟糕的想法。相反,您应该授予apache
对/myfolder/
的写入权限。