2011-12-09 19 views
35

PHPを使ってPHPを手動で起動すると、自分のサーバーにPHPスクリプトを実行させるにはどうすればよいですか?基本的に私は2時間ごとに実行される非常に大きなcronジョブファイルを持っていますが、ロードを待たずに手動でファイルを起動できるようにしたいのです(私はそれをサーバー側でやりたいと思っています)。別のPHPスクリプトからPHPスクリプトを実行

EDIT:phpファイルからファイルを実行したい...コマンドラインではありません。

+2

cronと同じコマンドを実行するだけですか?あるいは単に 'php file.php'を実行しますか? –

+1

crontabからコマンドをコピーしてコマンドラインに貼り付けてみませんか? –

+0

@Rocket PHPファイルからやりたいです – domino

答えて

82

あなたは

hello.php 
<?php 
echo 'hello world!'; 
?> 

Command line: 
php hello.php 

Output: 
hello world! 

コマンドラインから手動でPHPスクリプトを呼び出すことができますは、マニュアルを参照してください:http://php.net/manual/en/features.commandline.php


EDIT OPは重要なディテールを追加するために、質問を編集しました:スクリプトは別のスクリプトによって実行されます。

いくつかのアプローチがあります。まず最初に、最も簡単なのは、単にファイルを含めるだけです。ファイルをインクルードすると、そのコードは「実行」されます(実際には解釈されます)。関数またはクラス本体に含まれていないコードはすぐに処理されます。 includedocs)またはrequiredocs)の文書を参照してください(注:include_oncerequire_onceは関連していますが、重要な点で異なります)。コードは次のようになります。

include('hello.php'); 
/* output 
hello world! 
*/ 

第ややより複雑でshell_execdocs)を使用することです。 shell_execを使用すると、phpバイナリを呼び出し、目的のスクリプトを引数として渡します。あなたのコードは次のようになります。

$output = shell_exec('php hello.php'); 
echo "<pre>$output</pre>"; 
/* output 
hello world! 
*/ 
最後に

、かつ最も複雑な、あなたはそれがブラウザを介して要求されたかのようにファイルを呼び出すためにCURLライブラリを使用することができます。ここCURLライブラリのドキュメントをチェックアウト:http://php.net/manual/en/features.commandline.php

  • includehttp://us2.php.net/manual/en/function.include.php
  • requirehttp://us2.php.net/manual/en/function.require.php
  • $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, "http://www.myDomain.com/hello.php"); 
    curl_setopt($ch, CURLOPT_HEADER, 0); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) 
    
    $output = curl_exec($ch); 
    curl_close($ch); 
    echo "<pre>$output</pre>"; 
    /* output 
    hello world! 
    */ 
    

    ドキュメントの機能に

  • +1

    私はコマンドラインではなくPHPファイルからやりたいと思っています。 – domino

    +1

    それはあなたの質問に含める非常に有用な情報でした! :P編集を参照して、別のPHPスクリプトを呼び出すためのさまざまな方法について議論します。 –

    +0

    お返事ありがとうございました! – domino

    0

    それはLinuxボックスである場合は、のようなものを実行します:Windowsでは

    php /folder/script.php 
    

    を、あなたのphp.exeのファイルがPATHの一部であることを確認する必要があり、同様のアプローチを行うだろうコマンドラインで

    php C:\folder\script.php 
    
    0

    :実行したいファイルを

    > php yourfile.php 
    
    0

    オープンsshとcommanを実行手動で?

    php /path/to/your/file.php 
    
    2

    あなたはバッククォートの表記を使用することができます。

    `php file.php`; 
    
    あなたがPHPを置く場所に

    #!/usr/bin/php 
    

    変更を:

    はまた、通訳を示すために、PHPファイルの先頭にこれを置くことができます。 はその後、ファイルに実行権限を与え、あなたは、PHPを指定せずにファイルを呼び出すことができます。

    `./file.php` 
    

    スクリプトの出力キャプチャしたい場合:

    $output = `./file.php`; 
    echo $output; 
    
    +0

    この回答は関係ありませんが、知っておくと良いです。 –

    -4

    を私はこれがあなたが何であるかだと思いますスクリプトファイルも.txt形式にすることができ

    <?php include ('Scripts/Php/connection.php'); 
    //The connection.php script is executed inside the current file ?> 
    

    を探して、それはまだ動作するはずです、それは私

    に対して行います3210

    <?php include ('Scripts/Php/connection.txt'); 
    //The connection.txt script is executed inside the current file ?> 
    
    5

    OPは、PHPスクリプトは、スクリプトから呼び出されたかに彼の質問を洗練しました。必要なスクリプトが見つからない場合にスクリプトが停止するので、phpステートメント 'require'は依存性に適しています。あなたのコードの中から "チェーン" 他のPHPプログラムをへ

    #!/usr/bin/php 
    <? 
    require '/relative/path/to/someotherscript.php'; 
    
    /* The above script runs as though executed from within this one. */ 
    
    printf ("Hello world!\n"); 
    
    ?> 
    
    0

    、 "ヘッダ"

    header("Location:index.php?page=menus");

    +0

    初期スクリプトがCRONから実行されている場合、同じ問題を抱えている他の人の場合には、今発見したようにヘッダーが実行されません。 – BeNice

    2

    を使用し、私はあなたのためにそこにオプションの

    require_once('phpfile.php'); 
    

    多くを使用することを好みます。物事を清潔に保つ良い方法です。

    0
    <?php 
    $output = file_get_contents('http://host/path/another.php?param=value '); 
    echo $output; 
    ?> 
    
    +1

    は、いくつかのコンテキストを提供し、コードを説明します。 –

    関連する問題