Я пытаюсь запустить скрипт Ruby, который очищает какой-то URL-адрес и выполняет его из PHP.
Это мой код PHP:
PHP:
$url = 'https://www.example.com';
$result= shell_exec("ruby script.rb $url");
// Or $result = `ruby script.rb "$url" 2>&1`; to Debug
echo 'result is:';
echo $result;
Рубиновый код:
require 'time'
require 'mechanize' //* or require 'nokogiri', doesn't matter * //
url = ARGV.first
begin
page = Mechanize.new.get(url).content
result = page.match(/findMe: "\$(.+)"/)[1].tr(',', '')
# Uncomment following line to see date and time in output
# output = Time.now.strftime('[%F %T %z] ') + result
# Uncomment following line to see only result in output
output = result
# Output the result on terminal
puts result
rescue => detail
puts detail.message
end
Из SSH я могу нормально выполнить PHP:
php run.php
Но когда я пытаюсь загрузить этот файл PHP из веб-браузера, я получаю:
результат: script.rb: 2: в `require ‘: нет такого файла для загрузки — механизировать
(LoadError) из script.rb: 2
Я попытался определить пути, используя PWD
для полного пути сценария ruby, и ruby which
чтобы найти путь к самому рубину, но это ничего не изменило.
Три разработчика Ruby, которые я взял, до сих пор не могли понять это.
Сервер работает под управлением Apache.
Задача ещё не решена.
Других решений пока нет …