2013-03-06 4 views
2

Я пытаюсь выполнить двоичные файлы C++, которые я создал с помощью команды cmake и make из PHP. Если я пытаюсь выполнить ту же команду с терминала, все работает отлично, но из php ничего не происходит. Я проверил safe_mode, его отключили. Я дал все исполняемые разрешения, используя chmod. Я попытался положить материал в ту же папку, в другую папку. На самом деле я пробовал все возможные решения, о которых я могу думать, но все же я не могу выполнить эти двоичные файлы. Любая идея, почему я не могу это сделать?PHP - Не удается выполнить двоичные файлы C++?

Любая помощь была бы действительно оценена по достоинству.

Заранее спасибо.

Процедура я использовал: -

if($dir !== FALSE) { 
    $command = "./segmentation.sh $dir->dirname >> $dir->dirname/log"; 
    $output = $this->terminal($command); 
    echo $output['output']; 
} 

функция терминала

public function terminal($command) 
{ 
    if(function_exists('system')) 
    { 
     ob_start(); 
     system($command , $return_var); 
     $output = ob_get_contents(); 
     ob_end_clean(); 
    } 
    else if(function_exists('passthru')) 
    { 
     ob_start(); 
     passthru($command , $return_var); 
     $output = ob_get_contents(); 
     ob_end_clean(); 
    } 
    else if(function_exists('exec')) 
    { 
     exec($command , $output , $return_var); 
     $output = implode("n" , $output); 
    } 
    else if(function_exists('shell_exec')) 
    { 
     $output = shell_exec($command) ; 
    } 
    else 
    { 
     $output = 'Command execution not possible on this system'; 
     $return_var = 1; 
    } 
    return array('output' => $output , 'status' => $return_var); 
} 

И мой сценарий оболочки имеет обычный вызов к бинарным как

/path/to/folder/binary_file $args 

Я попытался эхо, LS, MKDIR cmd из моего сценария оболочки, и он работал идеально, только эти двоичные файлы не выполняются.

+0

ставку свой вопрос разрешения пользователя – 2013-03-06 02:01:12

+0

Можете ли вы предоставить код на то, как вы пытаетесь выполнить C++ двоичную? Кроме того, кто является владельцем двоичного файла C++? Нужно быть таким же, как пользователь, которым вы управляете веб-сервер. – neutron

+0

@neutron Я опубликовал фрагмент кода. взглянуть. – Varundroid

ответ

0

Похоже, что ваш рабочий каталог может отличаться от того, что вы думаете.

Попробуйте это:.

$path = realpath(dirname(__FILE__)); 

$cmd = $path . $command; 

и попробуйте запустить эту команду (предполагается, что C++ файл находится в том же каталоге, что и файл PHP вы работаете

0

Это было MAMP, что вызывает проблему

.

Если вы используете MAMP, как мне тогда вы должны выполнить еще одну вещь.

Меню-> Перейти к папке-> Write «/ Applications/MAMP/Library/bin /» в тексте маль x-> Пресс ввести

найти файл под названием "envvars" и прокомментировать следующие строки с помощью #: -

DYLD_LIBRARY_PATH = "/ Applications/MAMP/Библиотека/Библиотека: $ DYLD_LIBRARY_PATH" экспорт DYLD_LIBRARY_PATH

Теперь все должно работать нормально.

Credit goes to this blog - Author Jonathon Hill

+0

Здесь вы должны воссоздать содержание этого сообщения. С кредитом, конечно. –

+0

Хорошо :) сделают это. – Varundroid

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