Это не прямой ответ на ваш вопрос, а просто предложенное улучшение вашего кода. Вместо использования sudo я бы придерживался решения @ tamrat. Это скорее комментарий, но он слишком длинный, чтобы быть комментарием.
Вместо использования функции php exec
, я бы порекомендовал вам использовать компонент процесса Symfony, который уже доступен. в вашем Laravel проекте.
use Symfony\Component\Process\Process;
use Symfony\Component\Process\Exception\ProcessFailedException;
Использование:
$createDir = "mkdir /full/path/to/merchants/".$merchant->identity." && cd /full/path/to/merchants/".$merchant->identity;
$process = new Process($createDir);
$process->run();
if (!$process->isSuccessful()) {
throw new ProcessFailedException($process);
}
Я также предлагаю вам использовать полные пути, а не относительные пути (если это возможно для вашего варианта использования), чтобы вы не выполняйте действия в другом каталоге, когда вы повторно используете код из другого файла. Если нет, убедитесь, что вы всегда на правильном пути, правильно проверив.