2016-08-31 3 views
1

попробовал эти командыКак запустить файл рубиновый из PHP кода

exec("ruby helloword.rb"); 
system ("ruby helloword.rb"); 

Запуск PHP на сервере окон 2012R2 Я просто хочу, класс рубин бежать, как он будет читать и писать результаты из текстового файла и чем я могу пользовательские текстовые файлы. Есть ли простой способ сделать это. Пробовал почти все на stackoverflow. Поэтому, пожалуйста, не помещайте это как дубликат.

ответ

-1

Вы можете использовать load способ Kernel. обратитесь к документации на http://ruby-doc.org/core-2.2.1/Kernel.html#method-i-load

+0

Можете ли вы немного объяснить, как я могу использовать этот метод, если вы можете привести пример или что-то в этом роде. –

+0

вы можете посмотреть [здесь] (https://www.practicingruby.com/articles/ways-to-load-code) – Kushal

+0

@KushalMistry Можете ли вы добавить важную часть кода из ссылки, которую вы поделили в своем ответе , coz в течение времени, когда ссылки мертвы, и если кто-то в будущем хочет ссылаться, тогда это становится трудным. –

1

Я не уверен, если это то, что вы ищете, но смотрите ниже :)

Se пример ниже:

<?php 
$descriptorspec = array(
    0 => array("pipe", "r"), // stdin is a pipe that the child will read from 
    1 => array("pipe", "w"), // stdout is a pipe that the child will write to 
    2 => array("file", "./error-output.txt", "a") // stderr is a file to write to 
); 
$process = proc_open('ruby ./test.rb', $descriptorspec, $pipes); 

if (is_resource($process)) { 
    // $pipes now looks like this: 
    // 0 => writeable handle connected to child stdin 
    // 1 => readable handle connected to child stdout 
    // Any error output will be appended to /tmp/error-output.txt 

    fwrite($pipes[0], 'hello world'); 
    fclose($pipes[0]); 

    echo stream_get_contents($pipes[1]); 
    fclose($pipes[1]); 

    // It is important that you close any pipes before calling 
    // proc_close in order to avoid a deadlock 
    $return_value = proc_close($process); 

    echo "command returned $return_value\n"; 
} 
?> 

Сохранить это как Сохранить как «тест. PHP ":

источник:

Run Ruby/Python from PHP Code

Вот еще один хороший пример:

//PHP script to execute ruby scripts when the host doesn't have a cgi handler for .rb 
//Use with this .htaccess: 

/* 
Options +FollowSymlinks 
RewriteEngine on 
RewriteRule ^(.*)\.rb$ handler.php?rb=$1.rb [NC,QSA] 
*/ 

$file = $_GET['rb']; 

if(in_array($file, scandir('.'))) 
{ 
foreach($_REQUEST as $key=>$value) if($key != 'rb') $args .= " $key=".urlencode($value); 
echo exec(escapeshellcmd('./'.$file.$args)); 
} 
else 
{ 
echo '404- Page not found'; 
} 
?> 

С уважением

Daniel

+0

Первый ответ на ошибку «ruby не распознан как внутренняя или внешняя команда», операционная программа или командный файл –

+0

У вас установлен рубин? также смотрите http://stackoverflow.com/questions/4619996/how-to-run-ruby-python-scripts-from-inside-php-passing-and-receiving-parameters?noredirect11&lq=1 –

+0

Ruby установлен, и я могу запустить его через командную строку. Когда я пытаюсь запустить его через php-код, он не работает. –

0

Он работал путем добавления exec("filename"); Прежде, чем это было написано что-то вроде этого Exec ('рубин имя файла'); Спасибо всем за их ответы.

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