2012-03-25 2 views
2

Я пытаюсь скомпилировать файл C++ на сервере. У меня установлена ​​64-разрядная версия Windows 7 вместе с компилятором mingw32 c/C++, установленным в системе под управлением WampServer2.0 (php 5.3.0). Я уже установил переменные env в относительные пути (c: \ MinGW \ bin). Следующий фрагмент кода не вызывает каких-либо исполняемый в Dest_folder, однако команда работает отлично, когда выполнена из CMD (командной строки) и генерирует исполняемомуНе удается выполнить g ++ через php system()

<?php 
$string = system("g++ -o C:\\wamp\\www\\Dest_folder\\file.exe C:\\wamp\\www\\Dest_folder\\file.cpp", $retval); 
echo $retval; 
echo $string; 
?> 

переменная $ строка должна возвращает последнюю строку вывод команды на успех, а FALSE при сбое (который в этом случае ничего не возвращает), а переменная $ retval возвращает 1. Я делаю что-то неправильно? Также я заметил, что каждый успешный вызов system() (все остальные вызовы, кроме компиляции g ++) производит 0 как $ retval.

ответ

4

обратной косой имеет особое значение в PHP строковых литералов, так что вам нужно, чтобы избежать его:

$string = system("g++ -o C:\\wamp\\www\\Dest_folder\\file.exe C:\\wamp\www\\Dest_folder\\file.cpp", $retval); 
+0

Я уже пробовал, что это не имеет никакого значения. – Seeder

+0

@Seeder: Может ли 'g ++' быть найдена вашей оболочкой? Укажите весь путь. –

+0

Я установил переменные пути и среды для C: \ MinGW \ bin (используя Windows powershell). Тем не менее, я попытался указать весь путь, но не работает. Как я уже сказал, это отлично работает, когда 'g ++ -o C: \ wamp \ www \ Dest_folder \ file.exe C: \ wamp \ www \ Dest_folder \ file.cpp' выполняется из командной строки, но не тогда, когда я вызываю его с помощью системы (). – Seeder

0

Если фиксации обратной косой черты не решить вашу проблему, проверьте в файле php.ini для линии: disable_functions , И если вы видите написанную «систему», удалите ее.

Отношения

+0

Фактический код имеет довольно много вызовов system(), все они хорошо работают (на данный момент), за исключением этого. Итак, я предполагаю, что это исключает возможность отключения функции system() в php.ini – Seeder

+0

Включает ли ваш cpp файлы .h? – grifos

+0

Вы имеете в виду, что стандарт # включает в себя? Он использует iostream, fstream, vector.h и т. Д. Никаких дополнительных файлов .h для связи – Seeder

Смежные вопросы