Вызов php-скриптов внутри кода ruby

Я хочу вызвать php-скрипты из моего кода ruby. Из ruby ​​он должен передать аргументы php в качестве аргументов командной строки. Но для аргумента с пробелами это воспринимается как команда.

Например:

result = 'php sample.php "#{name}" "#{location}"'

Возвращается

sh: line 1: Blahh Blahh: command not found
sh: line 2: Some more Blahh: command not found

Кто-нибудь может сказать, как передать строку ruby ​​в качестве аргумента ??

2

Решение

Вы можете использовать синтаксис backticks для системных вызовов.

Но проблема в том, что вам нужно пройти -f опция PHP, чтобы сказать PHP выполнить файл вместо попытки запуска аргументов командной строки.

test.rb:

path = File.dirname(__FILE__) + '/'
args = ['arg1', 'arg2']
puts `php -f #{ path + 'sample.php'} { args.join(' ') }`

sample.php

<?php
if (isset($argv)){
print_r($argv);
}

Выход:

Array
(
[0] => ./sample.php
[1] => arg1
[2] => arg2
)

редактировать

Вы также можете использовать компонент StdLib Shellwords чтобы избежать и привести аргументы для вас:

require 'shellwords'
path = File.dirname(__FILE__) + '/'
args = ['arg1', 'arg2 asdas']
puts `php -e #{ path + 'test.php'} #{ Shellwords.join(args) }`

Выход

Array
(
[0] => ./test.php
[1] => arg1
[2] => arg2 asdas
)
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]