簡體   English   中英

從另一個 PHP 腳本執行 PHP 腳本

[英]Execute a PHP script from another PHP script

我如何通過使用 php 手動觸發來讓我的服務器運行 php 腳本? 基本上我有一個非常大的 cronjob 文件,每 2 小時運行一次,但我希望能夠自己手動觸發該文件,而不必等待它加載(我希望它在服務器端完成)。

編輯:我想從 php 文件執行文件...不是命令行。

您可以從命令行手動調用 PHP 腳本

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

Command line:
php hello.php

Output:
hello world!

請參閱文檔: http : //php.net/manual/en/features.commandline.php


編輯OP 編輯​​了問題以添加一個關鍵細節:腳本將由另一個腳本執行。

有幾種方法。 首先也是最簡單的方法,您可以簡單地包含該文件。 當您包含一個文件時,其中的代碼被“執行”(實際上,被解釋)。 任何不在函數或類主體內的代碼都將被立即處理。 查看include ( docs ) 和/或require ( docs ) 的文檔(注意: include_oncerequire_once是相關的,但在一個重要方面有所不同。查看文檔以了解差異)您的代碼如下所示:

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

第二個稍微復雜一點的是使用shell_exec ( docs )。 使用shell_exec ,您將調用 php 二進制文件並將所需的腳本作為參數傳遞。 您的代碼如下所示:

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

最后,也是最復雜的,您可以使用 CURL 庫調用文件,就像通過瀏覽器請求它一樣。 在此處查看 CURL 庫文檔: http : //us2.php.net/manual/en/ref.curl.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!
*/

所用函數的文檔

您可以使用反引號表示法:

`php file.php`;

您也可以將其放在 php 文件的頂部以指示解釋器:

#!/usr/bin/php

將其更改為您放置 php 的位置。 然后給文件執行權限,你可以在不指定php的情況下調用文件:

`./file.php`

如果要捕獲腳本的輸出:

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

OP 將他的問題提煉為如何從腳本調用 php 腳本。 php 語句“require”有利於依賴,因為如果找不到所需的腳本,腳本將停止。

#!/usr/bin/php
<?
require '/relative/path/to/someotherscript.php';

/* The above script runs as though executed from within this one. */

printf ("Hello world!\n");

?>

我更喜歡使用

require_once('phpfile.php');

有很多選擇可供您選擇。 以及保持事物清潔的好方法。

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

我認為 function“評估”是正確的解決方案。

官方文檔在這里: https://www.php.net/manual/en/function.eval.php

並且代碼應該是以下形式:

$some_code = retrieve_or_generate_some_php_code();
eval($some_code);

如果它是一個 linux 盒子,你會運行類似的東西:

php /folder/script.php

在 Windows 上,您需要確保 php.exe 文件是 PATH 的一部分,並對要運行的文件執行類似的方法:

php C:\folder\script.php

打開ssh並手動執行命令?

php /path/to/your/file.php

從你的代碼中“鏈接”另一個php程序,使用“header”

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

在命令行上:

> php yourfile.php

可能且最簡單的單行解決方案是使用:

file_get_contents("YOUR_REQUESTED_FILE");

或 equivavelt 例如 CURL。

嘗試這個:

header('location: xyz.php'); //thats all for redirecting to another php file

我想這就是你要找的

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

腳本文件也可以是 .txt 格式,它應該仍然有效,它對我有用

例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM