[英]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_once
和require_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!
*/
所用函數的文檔
include
: http : //us2.php.net/manual/en/function.include.phprequire
: http : //us2.php.net/manual/en/function.require.phpshell_exec
: http://us2.php.net/manual/en/function.shell-exec.phpcurl_init
: http://us2.php.net/manual/en/function.curl-init.phpcurl_setopt
: http://us2.php.net/manual/en/function.curl-setopt.phpcurl_exec
: http://us2.php.net/manual/en/function.curl-exec.phpcurl_close
: http://us2.php.net/manual/en/function.curl-close.php您可以使用反引號表示法:
`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.