簡體   English   中英

在 PHP 腳本中執行 WP CLI 命令

[英]Execute WP CLI commands in PHP script

為此,我將存儲庫 WP CLI 復制到 Root WordPress

而我寫了下面的PHP代碼對其進行編碼,遇到了以下錯誤

define('WP_CLI_ROOT', ABSPATH . 'wp-cli');
require_once WP_CLI_ROOT . '/php/wp-cli.php';
Warning: include_once(D:\Web\Sites\jupiterx/wp-cli/vendor/rmccue/requests/library/Requests.php): failed to open stream: No such file or directory in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\IncludeFrameworkAutoloader.php on line 48

Warning: include_once(): Failed opening 'D:\Web\Sites\jupiterx/wp-cli/vendor/rmccue/requests/library/Requests.php' for inclusion (include_path='C:\xampp\php\PEAR') in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\IncludeFrameworkAutoloader.php on line 48

Warning: include_once(D:\Web\Sites\jupiterx/wp-cli/vendor/wp-cli/mustangostang-spyc/Spyc.php): failed to open stream: No such file or directory in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\IncludeFrameworkAutoloader.php on line 49

Warning: include_once(): Failed opening 'D:\Web\Sites\jupiterx/wp-cli/vendor/wp-cli/mustangostang-spyc/Spyc.php' for inclusion (include_path='C:\xampp\php\PEAR') in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\IncludeFrameworkAutoloader.php on line 49

Warning: array_slice() expects parameter 1 to be array, null given in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Runner.php on line 905

Warning: Invalid argument supplied for foreach() in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Configurator.php on line 138

Warning: implode(): Invalid arguments passed in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Runner.php on line 1024

Fatal error: Uncaught Error: Class 'cli\Colors' not found in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Loggers\Regular.php:70 Stack trace: #0 D:\Web\Sites\jupiterx\wp-cli\php\class-wp-cli.php(881): WP_CLI\Loggers\Regular->error_multi_line(Array) #1 D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Runner.php(248): WP_CLI::error_multi_line(Array) #2 D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Runner.php(1083): WP_CLI\Runner::set_wp_root('D:\\Web\\Sites\\ju...') #3 D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Bootstrap\LaunchRunner.php(23): WP_CLI\Runner->start() #4 D:\Web\Sites\jupiterx\wp-cli\php\bootstrap.php(74): WP_CLI\Bootstrap\LaunchRunner->process(Object(WP_CLI\Bootstrap\BootstrapState)) #5 D:\Web\Sites\jupiterx\wp-cli\php\wp-cli.php(27): WP_CLI\bootstrap() #6 D:\Web\Sites\jupiterx\wp-content\plugins\tabanShahrSiteSaz\Plugin.php(72): require_once('D:\\Web\\Sites\\ju...') #7 D:\Web\Sites\jupiterx\wp-content\plugins\tabanShahrSiteSaz\app\core\SingletonPattern.php(26): TabanShahrSiteSaz\Plugin->includes() #8 D:\Web\Sites\jupiterx\wp-conten in D:\Web\Sites\jupiterx\wp-cli\php\WP_CLI\Loggers\Regular.php on line 70

在此先感謝您的幫助

WP-CLI 只能在 PHP cli SAPI 下正確運行,不能在像cgiapache或類似的 Web 服務器 API 下運行。 這有一些技術原因,但也直接關系到您服務器的安全性。

WP-CLI 是一個控制台應用程序

第一個技術原因是 WP-CLI 是一個控制台應用程序,它假定可以訪問控制台輸入 ( STDIN ) 和輸出 ( STDOUT ) 流。 在 WordPress 運行的 Web 服務器上下文中,這些不存在。 Web 服務器的“輸入”是 Web 請求的 URL 和負載,輸出是發送回瀏覽器的 HTML 或 JSON。

WP-CLI 是 WordPress 的包裝器

第二個技術原因是 WP-CLI 基本上是一個“黑客”,它“包裝”了整個 WordPress 安裝並將其作為自己進程中的子例程執行。 如果您嘗試使用 WordPress 來啟動 WP-CLI,您就會遇到先有雞還是先有蛋的問題,或者是軟件對“Inception”的解釋。

WP-CLI 是一個系統管理工具

這與安全性也直接相關的原因是,從最廣泛的意義上講,WP-CLI 是一個系統管理工具。 它將直接創建、修改、刪除文件,對數據庫進行直接請求等等。 它的所有操作都可以繞過 WordPress 及其插件可能在應用程序級別實施的任何安全措施。 使面向公眾的前端可以訪問 WP-CLI 並通過 Web 請求觸發它會使其成為一個嚴重的安全漏洞。 任何服務器端管理工具都不應該以任何方式暴露給前端。

希望這可以解釋為什么您想做的事情無法完成,以及為什么如果可以的話您不想做。

暫無
暫無

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

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