ここから本文です

【PHP】外部ファイル実行(呼出し)方法

e97********さん

2010/8/3116:02:36

【PHP】外部ファイル実行(呼出し)方法

サイトの時間的更新をcronを使用して処理させています。
この度、同じシステムをコピーしてサイト②を作成しました。


◎サイト①
index.php等
update.php ←更新処理 cronで定時処理させている。
func.php ←関数群 update.php他でインクルードされている。

◎サイト②
index.php等
update.php
func.php

サイト①、②ともPHPコードは同じです。(同じレンサバです。)
サイト②の時間更新処理もcronを設定してやりたいところですが、
使用しているレンサバがcronの回数を制限しているので、使えません。

そこで、同サーバーなので、サイト①のupdate.phpの最後に、サイト②のupdate.phpを読込処理を
入れてやればと思い、
include_once '/(サイト②のフルパス)/update.php';
と追加しましたが、
案の定Cannot redeclare というエラーが出てきました。
PHPコードが同じなので、当然関数名も同じなので、エラーが出て当然。

include_once以外にも
readfile,exec,header Locationなどを試してみましたが、ダメでした。
(闇雲にって感じですね)

includeやrequire以外に、外部のphp処理をさせる方法はありませんでしょうか??

やりたいことをまとめると、
・上記サイト①のupdate.phpから、サイト②のupdate.phpを呼び出したい。
・ソースがカブっているので、includeやrequireでは、Cannot redeclareエラーが出るので、それが出ない方法。

ということになります。

どうか知恵をお貸しください。
よろしくお願いします。

補足exec()をしてみましたが、うまくいきませんでした(T_T)

exec()の引数になるコマンドってどう書けばいいでしょうか?

やりたいことは、'/(サイト②のフルパス)/update.php'にアクセスさせたいのですが、
exec('/(サイト②のフルパス)/update.php');では、
「Cannot execute a blank command」ってエラーが表示されました。

よろしくお願いします。

この質問は、活躍中のチエリアン・専門家に回答をリクエストしました。

閲覧数:
8,104
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

han********さん

2010/9/114:50:20

exec('php /(サイト②のフルパス)/update.php')でいけると思います。

あと、
$output = `php /(サイト②のフルパス)/update.php`;でも行けるらしいです。
実行結果はshell_exec()と同じになるようです。

http://hain.jp/index.php/tech-j/2006/08/30/p58

質問した人からのコメント

2010/9/1 14:54:09

降参 ご回答いただきまして、ありがとうございます。
BAは自分のレベルに合わせてご回答いただいたhanatarouooさんに送ります。

ベストアンサー以外の回答

1〜1件/1件中

b_f********さん

編集あり2010/9/114:07:14

systemとかexecとかを使って、別プロセスとして起動するのが一番簡単だと思いますけど。

http://php.benscom.com/manual/ja/function.system.php
http://php.benscom.com/manual/ja/function.exec.php

他にも、cronから起動されるのを直接update.phpにしないで、いったんシェルスクリプトを起動するように設定しなおして、シェルスクリプトファイルから二つのupdate.phpを順次実行するようにしてもいいと思います。
これなら、phpスクリプトのほうが無修正で済みますしね。

##補足分##
PHPスクリプトの頭に「#! /usr/local/bin/php」など、スクリプトを実行するためのインタプリタ指定がなければそれだけでは動きませんね。
もちろん、パーミッションで実行許可がされている必要もあります。
この辺はUNIXのシェルの仕様です。

こういった面倒なことを考えずに、とにかく実行したいというだけならば、「/usr/local/bin/php /…/update.php」みたいに書けばOKです。
ちなみに、「/usr/local/bin/php」の部分は環境によって違いますので。

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる