Компилировать файл C ++ с помощью PHP

Я использую PHP на компьютере Windows. Я также использую Dev C ++. Я могу скомпилировать файл .cpp на CMD с помощью этой команды:

g++ hello.cpp -O3 -o hello.exe 

Теперь я пытаюсь выполнить ту же команду, используя функцию php system (), поэтому она выглядит так:

system ("g ++ c: \ wamp \ www \ grader \ hello.cpp -O3 -o C: \ wamp \ www \ grader \ hello.exe");

но он не компилируется. Я потерян, пожалуйста, скажите мне, что мне не хватает?

Я также посмотрел на этот вопрос, и это именно то, что мне нужно, но я не смог найти полезное решение для моего дела:

Php-скрипт для компиляции c ++-файла и запуска исполняемого файла с входным файлом

Две вещи:

  1. Вы используете двойные кавычки и не избегаете \ внутрь пути.
  2. Вы не используете полный путь к g ++.

Первый из них важен, так как \ следует, что что-то имеет особое значение в такой строке (вы можете знать \ n как новую строку), вторая важна, поскольку среда PHP может иметь другой путь поиска.

Решение может быть

 system("c:\\path\\to\\g++ c:\\wamp\\www\\grader\\hello.cpp -O3 -o C:\\wamp\\www\\grader\\hello.exe"); 

В качестве альтернативы вы можете использовать одинарные кавычки, вместо двойных кавычек, использовать разные, менее строгие правила экранирования

 system('c:\path\to\g++ c:\wamp\www\grader\hello.cpp -O3 -o C:\wamp\www\grader\hello.exe'); 

или используйте / вместо \, который также поддерживается окнами.

 system("c:/path/to/g++ c:/wamp/www/grader/hello.cpp -O3 -o C:/wamp/www/grader/hello.exe"); 

То, что вы делаете, это ваш выбор, в то время как многие считают первый из них уродливым, а последний – плохим стилем в Windows 😉

Используйте команду PHP exec.

 echo exec('g++ hello.cpp -O3 -o hello.exe'); 

должно сработать.

В PHP существует целый ряд различных команд exec и system, см. Здесь:

 http://www.php.net/manual/en/ref.exec.php 

Если вы хотите получить выход в переменную, используйте:

 $variable = exec('g++ hello.cpp -O3 -o hello.exe'); 

Если это не сработает, убедитесь, что g ++ доступен на вашем пути и что вы вошли в систему с достаточным количеством привилегий, чтобы позволить ему выполнить.

Вы также можете обнаружить, что PHP не работает, по сути, выполняется вашим веб-сервером (если только вы не используете PHP из командной строки), а идентификатор пользователя веб-сервера может не иметь права на запись в папку, где G ++ пытается создать выходной файл.

Временное предоставление доступа на запись к «Everybody» в выходной папке будет проверять, если это так.

Спасибо всем. Я попытался запустить коды, приведенные в предыдущих сообщениях, и это сработало как шарм.

Я использовал следующий код, используя мой браузер

 $var = exec("g++ C:/wamp/www/cpp/hello.cpp -O3 -o C:/wamp/www/cpp/hello.exe"); echo $var; 

Создается файл exe. Я могу увидеть результат, когда я запускаю exe-файл, но проблема в том, что я запускаю вышеуказанный код в браузере, результат не отображается на веб-странице. Я дал полное разрешение для всех пользователей, но все же даю, не показывает результат на веб-странице.

Мне действительно нужна помощь в этом, так как я делаю проект по моделируемому отжигу, где хочу получить результат от скомпилированной программы на C ++ и отобразить его на веб-странице с помощью некоторых высокоуровневых jquery.

Еще раз спасибо всем, это помогло мне много, и я тоже многому научился.