在 PHP 中使用命令行工具_PHP教程
如果您使用过 PHP,您就会发现它是创建特性丰富的 Web 页面的出色工具。作为一大脚本语言,PHP:
·容易学习。
·有许多强大的框架(比如 CakePHP 和 CodeIgniter),让您能够像 Rails 程序员一样高效。
·能够与 MySQL、PostgreSQL、Microsoft SQL Server,甚至 Oracle 通信。
·能够轻松地与 JavaScript 框架集成,比如 script.aculo.us 和 jQuery。
但有时候,您想做更多的事情,或必须做更多的事情。我的意思是您必须直接与 PHP 运行的服务器的文件系统打交道。您最终需要处理文件系统上的文件,了解运行的进程或执行其他任务。
首先,您对在 PHP 使用 file() 命令打开文件很满意。但是在某种程度上,完成某些事情的唯一途径是在服务器上运行 shell 命令并获得特定的输出。例如,您可能想知道特定目录包含多少个文件。或者您想知道向某组日志文件写了多少行内容。或者您想操作这些文件,将它们复制到另一个目录,或使用 rsync 将它们发送到另一个位置。
在 “PHP 命令行?是的,您可以!” 这篇文章中,Roger McCoy 演示了如何从命令行直接使用 PHP ——不需任何 Web 浏览器。在这篇文章中,我从另一个角度看待相同的主题,向您展示如何紧密地与底层 shell 命令集成,以及将返回值包含到您的界面和进程中。
仅当您运行在 Linux、Berkeley Software Distribution (BSD) 或一些其他 UNIX 版本上时,这些操作才有效。我假设您运行在 Linux-Apache-MySQL-PHP (LAMP) 堆栈上。如果您运行其他版本的 UNIX,具体细节可能不同,因为在每个版本中命令行的可用性都不同。我知道很多人还在 Mac OS X(运行某个版本的 BSD)从事开发,因此我尽量保持示例命令的通用性,确保移植方便。
命令行概述
PHP Command Line Interface (CLI) Server Application Programming Interface (SAPI) 在 PHP V4.2.0 开始发布,用于试验目的。到 V4.3.0 时,已经受到完整支持并且默认启用。PHP CLI SAPI 允许您开发 PHP 支持的 shell 脚本,甚至是基于桌面的脚本。事实上,可以用 PHP 创建可直接从命令行运行的工具。采用这种方式,PHP 开发人员可以像 Perl、AWK、Ruby 或 shell 程序员一样高效。
本文探究构建到 PHP 中的工具,让您了解 PHP 运行的底层 shell 环境和文件系统。PHP 为执行外部命令提供大量函数,其中包括 shell_exec()、exec()、passthru() 和 system()。这些命令是相似的,但为您运行的外部程序提供不同的界面。所有这些命令都衍生一个子进程,用于运行您指定的命令或脚本,并且每个子进程会在命令输出写到标准输出 (stdout) 时捕捉它们。
shell_exec()
shell_exec() 命令行实际上仅是反撇号 (`) 操作符的变体。如果您编写过 shell 或 Perl 脚本,您就知道可以在反撇号操作符内部捕捉其他命令的输出。例如,清单 1 显示了如何使用反撇号在当前目录中获取每个文本(.txt)的单词计数。
清单 1. 使用反撇号计算单词数量
#! /bin/sh
number_of_words=`wc -w *.txt`
echo $number_of_words
#result would be something like:
#165readme.txt 388results.txt 588summary.txt
#andso on....
在您的 PHP 脚本中,您可以在 shell_exec() 中运行这个简单的命令,如清单 2 所示,并获取想要的结果。这里假设在同一个目录下有一些文本文件。
清单 2. 在 shell_exec() 中运行相同的命令
$results =shell_exec(wc -w *.txt);
echo $results;
?> $results =shell_exec(wc -w *.txt);
echo $results;
>
在图 1 中可以看到,获得的结果与从 shell 脚本得到的一样。这是因为 shell_exec() 允许您通过 shell 运行外部程序,然后以字符串的形式返回结果。
图 1. 通过 shell_exec() 运行 shell 命令的结果
注意,仅使用后撇号操作符也会得到相同的结果,如下所示。
清单 3. 仅使用后撇号操作符
$results =`wc -w *.txt`;
echo $results;
?> $results =`wc -w *.txt`;
echo $results;
>
清单 4 给出了一种更加简单的方法。
清单 4. 更加简单的方法
echo `wc -w *.txt`;
?> echo `wc -w *.txt`;
>
通过 UNIX 命令行和 shell 脚本能够完成很多东西,知道这点很重要。例如,您可以使用竖线将命令连接起来。您甚至可以使用操作符在其中创建 shell 脚本,并且仅调用 shell 脚本(根据需要使用或不使用参数)。
例如,如果您仅希望计算该目录下的前 5 个文本文件的单词数,那么可以使用竖线 (|) 将 wc 和 head 命令连接起来。另外,您还可以将输出结果放到 pre 标记内部,让它能够更美观地呈现在 Web 浏览器中,如下所示。
清单 5. 更加复杂的 shell 命令

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

VSCODE에서 JavaScript 코드를 작성하기위한 모범 사례에는 다음이 포함됩니다. 1) Pretier, Eslint 및 JavaScript 설치 (ES6) CodesNippets 확장, 2) DEANKE.JSON 파일 디버깅 및 3) 최신 JavaScript 기능 및 최적화 루프를 사용하여 성능을 향상시킵니다. 이러한 설정 및 트릭을 사용하면 VSCODE에서 JavaScript 코드를보다 효율적으로 개발할 수 있습니다.

Vbill Token Fund는 5 월 13 일에 시작하여 기관 투자자에게 미국 회계 법안을 토큰화할 수있는 기회를 제공했습니다. Vaneck의 새로운 Tagged Fund는 기관 투자자가 미국 재무부 법안에 투자 할 수 있도록합니다. Vbill Token Fund는 5 월 13 일 펀드의 전체 운영을 지원하는 토큰 화 된 플랫폼 인 Securities와의 협력으로 시작되었습니다. 이 펀드는 Ethereum, Sorana, Avalanche 및 BNB 체인의 4 가지 주요 블록 체인에 가입됩니다. 이 블록 체인 중 3 개 (Avalanche, Solana 및 BNB 체인)에서 최소 구독은 $ 100,000입니다. 이더 리움에서 최소 투자는 미화 백만 달러입니다. 이 기금은 실제 생활을 확장하려는 Vaneck의 노력입니다

PHP의 효율적인 해싱 스트링은 다음 방법을 사용할 수 있습니다. 1. 빠른 해싱에 MD5 기능을 사용하지만 비밀번호 저장에는 적합하지 않습니다. 2. SHA256 기능을 사용하여 보안을 향상시킵니다. 3. Password_hash 함수를 사용하여 비밀번호를 처리하여 최고 보안과 편의성을 제공하십시오.

vscode의 git 기록 및 변경 사항을 보는 방법에는 다음이 포함됩니다. 1. VSCODE 열기 및 프로젝트가 GIT 저장소를 초기화했는지 확인하십시오. 2. 왼쪽 사이드 바에서 "소스 코드 관리"아이콘을 클릭하십시오. 3. "... (더 많은 옵션)"를 선택하고 "git : showgitoutput"을 클릭하십시오. 4. 히스토리 및 파일 변경 사항을보십시오. 5. 파일을 마우스 오른쪽 버튼으로 클릭하고 "git : showfilehistory"를 선택하여 파일 변경 기록을보십시오. 이러한 단계를 통해 GIT 기록과 VSCODE의 변화를 효율적으로 볼 수있어 개발 효율성을 향상시킬 수 있습니다.

빠르게 발전하는 분산 금융 (Defi) 세계에서 혁신은 결코 멈추지 않습니다. 최신 물결은 속도 나 안전에 관한 것이 아니라 지혜에 관한 것입니다. Xploradex가 무대에 올 때입니다. XRP 레코드를 기반으로 한 Xploradex는 모든 수준의 거래에 인공 지능 (AI)을 도입하여 분산 교환을위한 새로운 벤치 마크를 설정하고 있습니다. 그러나 xploradex는 정확히 무엇이며, 다른 플랫폼과 어떻게 다른가, 생태계에서 $ xpl 토큰이 어떤 역할을 하는가? 이해하기 쉬운 방식으로 단계별로 구문 분석하겠습니다.

5 월 19 일은 XRP 시장에서 중요한 날이 될 것입니다.이 날 공식 기자 회견이 열릴 예정입니다. 이러한 움직임은 XRP 채택을위한 주요 금융 플랫폼의 열정이 커지고 있음을 반영합니다. CME Group은 공식적으로 5 월 19 일 XRP 시장 개발에있어 기관 투자자에게 중요한 이정표를 표시 할 예정입니다. 릴리스 날짜는 FutureSexChange가 공식적으로 발표하여 XRP 시장의 주요 진전을 강조했습니다. 이 조치는 주요 금융 플랫폼에 의한 XRP 채택의 맥락에서 수행됩니다. CME는 몇 주 전에 XRP 선물을 증가시킬 것이라고 확인했다. 이 확인은 CME의 최근 Solanafutures 출시 이후에 비트 코인 및 이더 리움으로 제품을 확장하는 교환을 보여줍니다.

오늘날의 붐비는 암호 시장에서, 과대 광고, 추측 및 예측할 수없는 변동성이 지배적입니다. 광대하고 종종 광고되는 암호 화폐 시장에서 지속적인 성공은 실제 유틸리티, 혁신 및 궁극적 인 견인으로 이어집니다. 투자자와 거래자가 지속적인 힘을 가진 프로젝트를 추구함에 따라, 강력한 사용 사례, 기본 안정성 및 미래 기술이있는 사람들은 특히 시장 변동성에 직면하고 있습니다. 2025 년에 눈에 띄는 3 개의 토큰은 Web3ai (Wai), Hedera (HBAR) 및 Polkadot (DOT)입니다. Web3AI의 AI 중심 거래 플랫폼, Hedera의 엔터프라이즈 사용 확장 성 및 Polkadot

PHP의 __clone 방법은 객체 클로닝시 사용자 정의 작업을 수행하는 데 사용됩니다. 클론 키워드를 사용하여 객체를 클로닝 할 때 객체에 __ 클론 메소드가있는 경우 방법이 자동으로 호출되어 클로닝 프로세스 중에 클로닝 된 객체의 독립성을 보장하기 위해 참조 유형 속성을 재설정하는 것과 같은 클로닝 프로세스 중에 맞춤형 처리가 가능합니다.
