PHP在composer项目创建后执行另一个命令



安装了一个带有php和composer的包后,我想进入那个目录,进入后我会复制一些文件,但我无法进入。如何做到?

<?php
$name = uniqid();
shell_exec('composer create-project laravel/laravel ' . $name);
shell_exec('cd ' . $name);

还不能发表评论,所以我在暗中拍摄。什么是";无法输入";意思是把你收到的错误告诉我们。

虽然,我可以说,它根本没有做你认为它应该做的事情

shell_exec生成一个shell,并在其中执行命令,然后终止shell(https://www.php.net/manual/en/function.shell-exec)。这意味着,如果您在shell exec中执行cd,那么它一结束,您就";背面";在您以前所在的目录中(实际上您从未更改过目录(。

也许您想使用CCD_ 3(PHP函数,https://www.php.net/manual/en/function.chdir.php)更改目录,然后在其中执行某些操作?类似:

<?php
$name = uniqid();
shell_exec('composer create-project laravel/laravel ' . $name);
chdir($name);
shell_exec('something');

我想说,如果你想复制文件,PHP中有一个有用的copy($source, $destination)函数(https://www.php.net/manual/en/function.copy.php),但我相信您最好只使用bash或任何其他批处理语言来完成这一切。

最新更新