使用php-shell_exec函数安装composer


Install composer using php shell_exec function

我正在尝试使用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/的写入权限。