Я запускаю XAMPP на Windows 10 и в моем PHP-коде у меня есть следующие строки кода.
exec('C:\cygwin64\bin\gcc', $res, $ret);
var_dump($res);
var_dump($ret);
Тем не менее, я получаю следующий вывод:
array(0) {
}
int(1)
Я пытался заменить ‘C: \ cygwin64 \ bin \ gcc’ на ‘C: \ cygwin64 \ bin \ gcc.exe’ и ‘gcc’, но ни один из них, похоже, не работает. Я также попытался заменить обратные косые черты на прямые. Когда я набираю «gcc» в cmd, я вижу ожидаемый результат, как показано ниже. Когда я пытался скомпилировать программы на C (используя абсолютные пути) с помощью gcc через PHP, никакой вывод не производился (компиляция не происходит).
gcc: fatal error: no input files
compilation terminated.
Другие системные вызовы, такие как «dir», работают нормально, и та же проблема сохраняется при использовании system () вместо exec (). Я также понимаю, что этот вопрос был адресован на Скомпилируйте файл C ++, используя PHP но принятое решение не работает в моем случае.
Почему это происходит и как я могу собрать дополнительную информацию для отладки?
gcc отвечает на stderr, поэтому вы должны перенаправить вывод на stdout, например так:
exec('C:\cygwin64\bin\gcc 2>&1', $res, $ret);
Других решений пока нет …