質問: 別サーバーにあるユーザー定義関数のライブラリを読み込んで使おうとするとエラーが出ます。 Fatal error: Call to undefined function my_func1() in /home/acount_name/www/test_file.php on line 6 //test_file.php ``` //別サーバーのユーザー定義関数を読み込み require_once("http://example.com/functions.php"); echo "出力1"; //ユーザー定義関数 my_func1(); ``` //functions.php ``` echo "ユーザー定義関数出力1"; function my_func1() { echo "ユーザー定義関数出力2"; ``` 結果 ``` 出力1ユーザー定義関数出力1 Fatal error: Call to undefined function my_func1() in /home/acount_name/www/test_file.php on line 6 ``` test_file.php と functions.php は別々のサーバーにあるためhttp経由で読み込んでいます。 functions.php があるサーバーの php の状態を php.info で確認すると allow_url_fopen と allow_url_include ともに On になっています。 functions.php 内にある「ユーザー定義関数出力1」が出力されていることからファイルの読み込み自体はできていると思います。ただ自作した関数 my_func1() を利用しようとするとエラーが出てしまいます。 ユーザー定義関数のライブラリを二つのサーバーで共有することはできないのでしょうか?ちなみに、ライブラリがあるサーバーがメインドメイン、呼び出す側はサブドメインの関係です。 なぜエラーが出るのでしょうか。ユーザー定義関数を別サーバーから利用する方法はありませんか? よろしくお願いします。
回答: > > functions.php があるサーバーの php の状態を php.info で確認すると allow_url_fopen と allow_url_include ともに On になっています。 > > > その設定は読み込む側(test_file.php)のサーバで確認するものだと思います。 > > ただ自作した関数 my_func1() を利用しようとするとエラーが出てしまいます。 > > > `require_once("http://example.com/functions.php");` こう書いた場合、functions.phpの実行結果を受け取ることになると思います。実行の結果PHPとして実行可能なものを出力するか、PHPとして実行されないファイルなどを利用するかどちらかではないでしょうか。 【PHP: include - Manual】 > > URLで指定されたサーバーがファイルをPHPコードとして解釈することが 出来る場合には、HTTP GETを使用してURLリクエストに引数を指定することが 出来ます。これはファイルの読み込み云々やスコープの継承とは関係なく、 ただ単純にスクリプトがリモートのサーバーで実行されて結果がローカルの スクリプトに読み込まれる、というだけのことです。 > > >