2020年1月

Window下的PHP命令行工具

本章介绍基于Windows PowerShell下 PHP命令行技巧

PowerShell

PowerShell(包括Windows PowerShell and PowerShell Core)是微软公司开发的任务自动化和配置管理框架,由.NET Framework.NET Core是构建的命令行界面壳层相关脚本语言组成,最初仅Windows组件,后于2016年8月18日开源跨平台支持

UNIX系统一直有着功能强大的壳程序(shell),Windows PowerShell的诞生就是要提供功能相当于UNIX系统的命令行壳程序(例如:shbashcsh),同时也内置脚本语言以及辅助脚本程序的工具。

定义命令别名

查看别名
  • 查看此Session中已经设定的所有别名:Get-Aliasgal

PS C:\> gal
  • 查看某别名的原命令,如ls的原命令:> Get-Alias ls

  • 查看某原命令的别名,如Get-ChildItem的别名:> Get-Alias -Definition Get-ChildItem

创建别名

​ 创建别名有两个方法可用New-AliasSet-Alias ;其中New-Alias 可以创建别名,但是不能更改;Set-Alias 可以创建或更改别名。

​ 注意:通过命令创建的别名只能在当前回话中生效,关闭回话窗口后回自动失效;创建永久别名需要在后面有详细介绍。

给记事本创建一个别名,并运行:

C:\PS> Set-Alias Edit notepad
C:\PS> Edit //打开记事本

//电脑中notepad++的程序路径为 E:\Program Files (x86)\Notepad++\notepad++.exe
C:\PS> Set-Alias Edit "E:\Program Files (x86)\Notepad++\notepad++.exe"
C:\PS> Edit //打开Notepad++程序
删除别名

​ 别名不用删除,自定义的别名在powershell退出时会自动清除。但是请放心,powershell内置别名(诸如ls,dir,fl等)不会清除。如果你非得手工删除别名。请使用

PS C:\PS> del alias:Edit
创建永久的别名

​ 在PowerShell中直接使用Set-AliasNew-Alias命令创建的别名在关闭此Session后即会失效,防止此现象的方法是将此命令写入Windows PowerShell profile文件。

​ 查看此文件在计算机中的位置:

PS C:\> $profile //实际上显示的路径文件不存在

​ 一般该文件在没有创建前是不存在的,使用以下命令为当前用户创建profile命令并返回文件地址:

PS C:\> New-Item -Type file -Force $profile //执行该命令回创建相应的文件,

​ 注意:首次在计算机上启动 Windows PowerShell 时,现用执行策略很可能是 Restricted(默认设置)。Restricted 策略不允许任何脚本运行。请在PowerShell中执行如下命令:

set-ExecutionPolicy RemoteSigned 
// 执行策略更改提示
// 执行策略可以防止您执行不信任的脚本。更改执行策略可能会使您面临 about_Execution_Policies 帮助主题中所述的安全风险。是否要更改执行策略? [Y] 是(Y) [N] 否(N) [S] 挂起(S) [?] 帮助 (默认值为“Y”): y 
// 修改后即可执行脚本。

PowerShell脚本四种执行权限:

Restricted——默认的设置, 不允许任何script运行

AllSigned——只能运行经过数字证书签名的script

RemoteSigned——运行本地的script不需要数字签名,但是运行从网络上下载的script就必须要有数字签名

Unrestricted——允许所有的script运行

若要了解计算机上的现用执行策略,请键入:get-executionpolicy

设置常用永久命令:

打开生成的profile文件:C:\Users\geek100\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1

Set-Alias Edit "E:\Program Files (x86)\Notepad++\notepad++.exe"
Set-Alias php56 "E:\phpStudy\PHPTutorial\php\php-5.6.27-nts\php.exe"
Set-Alias php72 "E:\phpStudy\PHPTutorial\php\php-7.2.1-nts\php.exe"
Set-Alias mysql "E:\phpStudy\PHPTutorial\MySQL\bin\mysql.exe"
Set-Alias mysql "E:\phpStudy\PHPTutorial\MySQL\bin\mysql.exe"
Set-Alias mysqldump "E:\phpStudy\PHPTutorial\MySQL\bin\mysqldump.exe"

重启PowerShell,在命令窗口中执行如下命令体验下效果吧:

PS C:\Users\geek100\Documents> Edit    //打开编辑器
PS C:\Users\geek100\Documents> mysql -h'127.0.0.1' -uroot -p //打开MySQL终端
PS C:\Users\geek100\Documents> mysqldump -h'127.0.0.1' -uroot -p test > test.sql //导出
PS C:\Users\geek100\Documents> php72 -i //查看phpinfo信息
PS C:\Users\geek100\Documents> php72 -v    //查看php版本信息

PHP命令行

一下是PHP官网相关一些介绍,具体介绍请查看《PHP命令行模式

从版本 4.3.0 开始,PHP 提供了一种新类型的 CLI SAPI(Server Application Programming Interface,服务端应用编程端口)支持,名为 CLI,意为 Command Line Interface,即命令行接口。顾名思义,该 CLI SAPI 模块主要用作 PHP 的开发外壳应用。CLI SAPI 和其它 CLI SAPI 模块相比有很多的不同之处,我们将在本章中详细阐述。值得一提的是,CLI和 CGI 是不同的 SAPI,尽管它们之间有很多共同的行为;