php是PHP 脚本语言的命令行解释器用于在命令行中执行 PHP 代码、运行 PHP 脚本和进行 PHP 相关操作。 基本语法php[选项][文件][参数...] 主要功能执行 PHP 脚本运行本地 PHP 文件命令行代码执行直接执行 PHP 代码片段交互式 Shell进入 PHP 交互式环境内置 Web 服务器快速启动 PHP 开发服务器代码检查语法检查、代码分析扩展管理查看和管理 PHP 扩展配置文件管理 PHP 配置 常用选项选项说明示例-a交互模式REPLphp -a-c指定 php.ini 文件php -c /path/to/php.ini-f执行文件php -f script.php-r执行单行代码php -r echo Hello;-i显示 PHP 信息phpinfophp -i-l语法检查lintphp -l script.php-m显示已加载的模块php -m-v显示 PHP 版本php -v-w显示去注释后的源代码php -w script.php-s语法高亮显示源代码php -s script.php-z加载 Zend 扩展php -z extension.so-d定义 INI 配置项php -d max_execution_time60-e生成扩展信息php -e-B在处理输入前执行代码配合管道使用-R对每行输入执行代码配合管道使用-F对每行输入执行文件配合管道使用-E在处理完成后执行代码配合管道使用-S启动内置 Web 服务器php -S localhost:8000-t指定 Web 服务器根目录php -S localhost:8000 -t /www--rf显示函数信息php --rf function_name--rc显示类信息php --rc class_name--re显示扩展信息php --re extension_name--ri显示扩展配置php --ri extension_name-h显示帮助php -h 实际应用示例示例 1基本 PHP 脚本执行# 1. 创建简单的 PHP 脚本cathello.phpEOF ?php echo Hello, World!\n; echo Current time: . date(Y-m-d H:i:s) . \n; echo PHP Version: . PHP_VERSION . \n; ? EOF# 2. 运行 PHP 脚本php hello.php# 3. 指定配置文件运行php-c/etc/php/8.1/cli/php.ini hello.php# 4. 设置临时配置php-ddisplay_errors1-derror_reportingE_ALL hello.php# 5. 包含路径设置php-dinclude_path.:/usr/share/phpscript.php示例 2命令行代码执行# 1. 单行代码执行php-recho Hello from command line!\n;# 2. 多行代码使用 NOWDOCphp-r $name World; echo Hello, $name!\n; for ($i 1; $i 5; $i) { echo Count: $i\n; } # 3. 使用变量php-r$x 10; $y 20; echo Sum: . ($x $y) . \n;# 4. 包含文件php-rrequire config.php; echo CONFIG_VALUE;# 5. 命令行参数php-recho Arguments: . implode(, , $argv) . \n;arg1 arg2 arg3示例 3交互式 ShellREPL# 1. 启动交互式 Shellphp-a# 进入交互模式可以输入PHP代码# 2. 交互模式示例php-aInteractive mode enabled phpechoHello, World!\n;Hello, World!php$x5*5;phpechoResult:$x\n;Result:25phpfunctionhello($name){returnHello,$name!;}phpechohello(PHP).\n;Hello, PHP!phpexit# 或按 CtrlD 退出# 3. 使用 Psysh更好的 REPL# 安装composerglobal require psy/psysh# 使用psysh示例 4内置 Web 服务器# 1. 启动简单 Web 服务器php-Slocalhost:8000# 2. 指定根目录php-Slocalhost:8000-t/var/www/html# 3. 指定路由器脚本php-Slocalhost:8000 router.php# 4. 监听所有接口php-S0.0.0.0:8000# 5. 完整示例脚本catserver.phpEOF ?php $port 8000; $host 0.0.0.0; $docroot __DIR__; echo Starting PHP development server...\n; echo Server: http://$host:$port\n; echo Document root: $docroot\n; echo Press CtrlC to stop\n\n; // 启动服务器 passthru(php -S $host:$port -t $docroot); ? EOFphp server.php示例 5语法检查和代码分析# 1. 语法检查Lintphp-lscript.php# 输出No syntax errors detected in script.php# 2. 检查多个文件forfilein*.php;doechoChecking$file...php-l$file||echoSyntax error in$filedone# 3. 显示去注释后的代码php-wscript.phpscript.min.php# 4. 语法高亮显示php-sscript.php# 或输出为 HTMLphp-sscript.phpscript.html# 5. 使用 token_get_all 进行更复杂的分析php-r $code file_get_contents(script.php); $tokens token_get_all($code); foreach ($tokens as $token) { if (is_array($token)) { echo token_name($token[0]) . : . $token[1] . \n; } } 示例 6PHP 信息管理# 1. 显示完整 PHP 信息php-i# 2. 显示特定信息php-i|grep-E(memory_limit|max_execution_time|upload_max_filesize)# 3. 显示 PHP 版本php-vphp--version# 4. 显示已加载的模块php-mphp-m|grep-imysql# 查找特定模块# 5. 显示模块信息php--ripdo_mysql php--rijson php--rixdebug# 6. 显示函数信息php--rfstrlen php--rfpreg_match# 7. 显示类信息php--rcDateTime php--rcPDO示例 7数据处理和转换# 1. JSON 处理echo{name:John,age:30}|php-rprint_r(json_decode(stream_get_contents(STDIN)));# 2. CSV 处理catdata.csv|php-r while (($line fgets(STDIN)) ! false) { $data str_getcsv($line); print_r($data); } # 3. XML 处理catdata.xml|php-r $xml simplexml_load_string(stream_get_contents(STDIN)); print_r($xml); # 4. Base64 编码/解码echoHello|php-recho base64_encode(stream_get_contents(STDIN));echoSGVsbG8|php-recho base64_decode(stream_get_contents(STDIN));# 5. MD5/SHA1 哈希echopassword|php-recho md5(stream_get_contents(STDIN)) . \n;echopassword|php-recho sha1(stream_get_contents(STDIN)) . \n;示例 8文件批量处理#!/bin/bash# 使用 PHP 批量处理文件# 1. 批量重命名文件php-r foreach (glob(*.txt) as $filename) { $new_name str_replace(.txt, .bak.txt, $filename); rename($filename, $new_name); echo Renamed: $filename - $new_name\n; } # 2. 批量修改文件内容forfilein*.php;dophp-r $content file_get_contents($argv[1]); $content str_replace(old_string, new_string, $content); file_put_contents($argv[1], $content); echo Updated: . $argv[1] . \n; $filedone# 3. 批量图片处理需要GD扩展php-r foreach (glob(*.jpg) as $image) { $im imagecreatefromjpeg($image); $im_resized imagescale($im, 200); imagejpeg($im_resized, resized/ . basename($image)); imagedestroy($im); imagedestroy($im_resized); echo Resized: $image\n; } # 4. 批量文件信息统计php-r $total_size 0; $file_count 0; foreach (glob(*) as $file) { if (is_file($file)) { $size filesize($file); $total_size $size; $file_count; echo sprintf(%-30s %10d bytes\n, $file, $size); } } echo \nTotal: $file_count files, . number_format($total_size) . bytes\n; 示例 9系统管理和监控#!/bin/bash# PHP 系统管理脚本# 1. 系统信息收集php-r echo System Information \n; echo Hostname: . gethostname() . \n; echo PHP Version: . PHP_VERSION . \n; echo OS: . PHP_OS . \n; echo Memory Limit: . ini_get(memory_limit) . \n; echo Max Execution Time: . ini_get(max_execution_time) . s\n; // CPU 信息 if (is_readable(/proc/cpuinfo)) { $cpuinfo file(/proc/cpuinfo); foreach ($cpuinfo as $line) { if (strpos($line, model name) ! false) { echo CPU: . substr($line, strpos($line, :) 2); break; } } } // 内存信息 if (is_readable(/proc/meminfo)) { $meminfo file(/proc/meminfo); foreach ($meminfo as $line) { if (strpos($line, MemTotal) 0 || strpos($line, MemFree) 0) { echo trim($line) . \n; } } } # 2. 进程监控php-r exec(ps aux, $output); echo Process Monitoring \n; foreach ($output as $line) { if (strpos($line, php) ! false) { echo $line . \n; } } # 3. 磁盘空间检查php-r echo Disk Usage \n; exec(df -h, $output); foreach ($output as $line) { echo $line . \n; } # 4. 网络连接检查php-r echo Network Connections \n; exec(netstat -tulpn 2/dev/null, $output); foreach ($output as $line) { echo $line . \n; } 示例 10Web 开发和测试#!/bin/bash# PHP Web 开发工具# 1. 快速创建测试脚本create_test_script(){cattest.phpEOF ?php // 简单的测试端点 header(Content-Type: application/json); $request [ method $_SERVER[REQUEST_METHOD], uri $_SERVER[REQUEST_URI], query $_GET, post $_POST, headers getallheaders(), server $_SERVER, ]; if (isset($_FILES) count($_FILES) 0) { $request[files] $_FILES; } echo json_encode([ status success, timestamp date(Y-m-d H:i:s), data $request, ], JSON_PRETTY_PRINT); EOFecho测试脚本已创建: test.php}# 2. 启动测试服务器start_test_server(){localport${1:-8080}localhost${2:-localhost}echo启动测试服务器: http://$host:$portecho测试端点:echo GET / - 显示请求信息echo POST / - 测试 POST 请求echo GET /info - PHP 信息echo GET /phpinfo - PHP 信息页面echo# 创建路由器catrouter.phpEOF ?php $uri $_SERVER[REQUEST_URI]; switch ($uri) { case /info: phpinfo(); break; case /phpinfo: header(Content-Type: text/html); ob_start(); phpinfo(); $info ob_get_clean(); echo !DOCTYPE htmlhtmlheadtitlePHP Info/title/headbody . $info . /body/html; break; default: require test.php; break; } EOFphp-S$host:$portrouter.php}# 3. API 测试工具test_api(){localurl$1php-r $url $argv[1]; echo Testing: $url\n\n; // GET 请求 echo GET Request \n; $response file_get_contents($url); echo Response:\n; print_r(json_decode($response, true)); echo \n; // POST 请求 echo POST Request \n; $context stream_context_create([ http [ method POST, header Content-Type: application/json\r\n, content json_encode([test data]) ] ]); $response file_get_contents($url, false, $context); echo Response:\n; print_r(json_decode($response, true)); $url}# 4. 数据库测试test_database(){php-r try { $pdo new PDO(mysql:hostlocalhost;dbnametest, root, ); $pdo-setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); echo Database connection successful!\n; // 创建测试表 $pdo-exec(CREATE TABLE IF NOT EXISTS test ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )); // 插入测试数据 $stmt $pdo-prepare(INSERT INTO test (name) VALUES (?)); $stmt-execute([Test . date(H:i:s)]); echo Inserted test data\n; // 查询数据 $result $pdo-query(SELECT * FROM test ORDER BY id DESC LIMIT 5); echo Last 5 records:\n; foreach ($result as $row) { echo ID: {$row[id]}, Name: {$row[name]}, Created: {$row[created_at]}\n; } } catch (PDOException $e) { echo Database error: . $e-getMessage() . \n; } } 高级用法1. PHP 内置 Web 服务器配置# 创建带自定义配置的开发服务器catdev-server.phpEOF ?php $port 8000; $host 127.0.0.1; $root __DIR__ . /public; // 自定义错误处理 function handle_error($errno, $errstr, $errfile, $errline) { echo Error [$errno]: $errstr in $errfile on line $errline\n; return true; } set_error_handler(handle_error); // 自定义路由 $router function($url) use ($root) { $path $root . $url; if (is_dir($path)) { $path rtrim($path, /) . /index.php; } if (file_exists($path)) { return $path; } // 尝试添加 .php 扩展名 if (file_exists($path . .php)) { return $path . .php; } return $root . /index.php; }; echo Starting development server at http://$host:$port\n; echo Document root: $root\n; echo Press CtrlC to stop\n\n; passthru(php -S $host:$port -t \$root\); EOFphp dev-server.php2. PHP 代码质量检查#!/bin/bash# PHP 代码质量检查工具# 1. 语法检查check_syntax(){echo 语法检查 find.-name*.php-typef|whilereadfile;doif!php-l$file/dev/null21;thenecho❌$filephp-l$fileelseecho✅$filefidone}# 2. 编码规范检查需要 PHP_CodeSniffercheck_coding_standards(){ifcommand-vphpcs/dev/null;thenecho 编码规范检查 phpcs--standardPSR12 src/elseecho安装 PHP_CodeSniffer: composer global require squizlabs/php_codesnifferfi}# 3. 静态分析需要 PHPStancheck_static_analysis(){ifcommand-vphpstan/dev/null;thenecho 静态分析 phpstan analyse src/--level8elseecho安装 PHPStan: composer global require phpstan/phpstanfi}# 4. 安全性检查check_security(){echo 安全性检查 # 检查危险函数dangerous_functions(system\|exec\|shell_exec\|passthru\|eval\|assert\|popen\|proc_open\|pcntl_exec)find.-name*.php-typef-execgrep-l$dangerous_functions{}\;|whilereadfile;doecho⚠️ 可能危险:$filegrep-n$dangerous_functions$filedone# 检查 SQL 注入风险echoecho检查 SQL 注入风险...find.-name*.php-typef-execgrep-lmysql_query\|mysqli_query\|query({}\;|whilereadfile;doecho检查:$filegrep-nquery($file|head-5done}# 5. 运行测试run_tests(){echo 运行测试 if[-fvendor/bin/phpunit];thenvendor/bin/phpunit tests/elifcommand-vphpunit/dev/null;thenphpunit tests/elseecho安装 PHPUnit: composer require --dev phpunit/phpunitfi}# 6. 生成报告generate_report(){localreport_filephp_quality_report_$(date%Y%m%d_%H%M%S).txtecho生成代码质量报告...{echoPHP 代码质量报告echo生成时间:$(date)echoechoecho1. 语法检查结果:check_syntaxechoecho2. 编码规范结果:check_coding_standardsechoecho3. 静态分析结果:check_static_analysisechoecho4. 安全性检查结果:check_securityechoecho5. 测试结果:run_tests}$report_fileecho报告已生成:$report_file}⚠️ 注意事项安全性不要在生产环境中使用-r选项执行不受信任的代码内存限制长时间运行的脚本可能需要调整内存限制超时设置默认执行时间限制为30秒需要时调整错误报告开发时启用错误报告生产环境禁用扩展依赖确保所需扩展已安装和启用权限问题Web 服务器需要适当的文件系统权限php命令是 PHP 开发者的重要工具不仅可以运行 Web 应用还可以用于脚本开发、系统管理和快速原型开发。