###前提・目的
WordPressを使い、PHP で ruby のプログラムを require を通して呼び出したいです。
以下「header.php」のコードが前提となります。
( exec を使っていますが上記が実現できればこだわりはありません。)
「header.php」
<?php $rb_url = get_template_directory() . '/rb/hello.rb'; $fullPath = '/usr/bin/ruby '.$rb_url; if(!exec($fullPath, $output, $return_status)){ echo '読み込み失敗'; }else{ echo '成功'; var_dump($output); }
###問題
パターン1なら「hello」が var_dump できますが、パターン2のように require を通すとできません。
###パターン1
上記「header.php」と下記「hello.rb」なら、「hello」が var_dump でき問題ありません。
「hello.rb」
ruby
1puts "hello"
###パターン2
しかし下記のように require を通すと「読み込み失敗」が出力されてしまうのが問題です。
「hello.rb」
ruby
1require 'hello2'
「hello2.rb」
ruby
1puts "hello"
###問題の考察と試行
ディレクトリが以下なので、require する場合は「./」が必要という情報を得ました。
wp-content ├ themes └ my-theme-name ├ header.php ├ rb ├ hello.rb └ hello2.rb
そこでパターン2の「hello.rb」を下記のように「./」としたのですが、やはり「hello2.rb」は呼ばれず「読み込み失敗」でした。
「hello.rb」
ruby
1require './hello2'
その後、次のように require_relative を使うと「hello」が var_dump できました。
「hello.rb」
ruby
1require_relative 'hello2'
でも、どうしてでしょうか?ディレクトリは上記の通りのはずですが、どうして require ではできず、require_relative ではできるのか…、
お分かりになる方はいらっしゃいますでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/09 16:49 編集
2020/01/09 17:16
2020/01/09 17:36
2020/01/10 00:22 編集
2020/01/11 11:06
2020/01/11 11:13
2020/01/11 11:15
2020/01/11 11:19
2020/01/11 11:20