php的include命令在cgi和cli下的不同之处

本文探讨了在PHP中使用相对路径与绝对路径进行文件包含的区别,特别是在Web环境(CGI)和命令行环境(CLI)下require及include语句的行为差异,并提供了一种兼容性的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

cgi,即web下,即打开浏览器执行php程序。
cli,即shell下,即在命令行下执行php程序。

假如有两个文件
public/index.php
common.php

当index.php写
require '../common.php';
这样的语句时,

差异是,无论include怎么设置,

cgi下总是正确的。

而在命令行下,非得先进入这个public目录,再执行php index.php,才能正确执行!!否则报错。
==============================================

兼容的方案,
写include或者 require时,
写 绝对路径即可,即硬盘目录。
而php常量__DIR__可以实现这个目标。

require __DIR__ . '/../common.php';

这种写法,无论在web下,还是在shell下,无论什么路径,无论php.ini的include怎么配置,都是ok的。
因为是从硬盘根目录下找起,是唯一的,是不会错的。
<think>我们注意到用户的问题集中在两个方面:1.寻找PHP8.3的下载链接2.在Armbian系统上部署PHP8.3的步骤根据之前的回答,我们已经提供了两种安装方法(源码编译第三方仓库)。但是用户特别询问了下载链接,因此我们将重点放在源码编译安装方法上,并提供官方下载链接。步骤:1.提供PHP8.3的官方下载链接。2.给出在Armbian上通过源码编译安装PHP8.3的详细步骤。注意:Armbian通常运行在ARM架构的设备上(如树莓派、OrangePi等),因此源码编译是跨平台的,但编译时间可能较长。我们将提供:-下载链接:从PHP官方网站获取,确保权威性。-安装步骤:包括安装依赖、配置、编译、安装配置。同时,考虑到用户可能希望使用第三方仓库安装(更简单),我们也会提及,但重点放在源码编译上(因为用户明确要求下载链接)。另外,我们也会提供配置Nginx验证安装的步骤。最后,生成相关问题。注意:用户提供的引用[1]似乎是一个Windows下的PuTTY连接命令,与当前问题无关,因此忽略。</think>### PHP 8.3 下载链接及 Armbian 部署指南 #### PHP 8.3 官方下载链接 最新稳定版下载地址: ```bash https://www.php.net/distributions/php-8.3.11.tar.gz ``` 其他版本可在官网查看: [https://www.php.net/downloads](https://www.php.net/downloads) --- ### Armbian 安装 PHP 8.3 完整步骤 #### 1. 安装编译依赖 ```bash sudo apt update sudo apt install -y build-essential autoconf libtool pkg-config \ libxml2-dev libsqlite3-dev libssl-dev libcurl4-openssl-dev \ libonig-dev libreadline-dev libzip-dev zlib1g-dev \ libpng-dev libjpeg-dev libwebp-dev libfreetype6-dev ``` #### 2. 下载并解压 PHP 源码 ```bash wget https://www.php.net/distributions/php-8.3.11.tar.gz tar -xzvf php-8.3.11.tar.gz cd php-8.3.11 ``` #### 3. 配置编译选项 ```bash ./configure --prefix=/usr/local/php8.3 \ --with-config-file-path=/etc/php8.3 \ --enable-fpm \ --with-fpm-user=www-data \ --with-fpm-group=www-data \ --with-openssl \ --with-curl \ --with-zip \ --with-pdo-mysql \ --with-gd \ --enable-mbstring ``` #### 4. 编译安装(使用多核加速) ```bash make -j$(nproc) sudo make install ``` #### 5. 配置文件设置 ```bash sudo mkdir /etc/php8.3 sudo cp php.ini-development /etc/php8.3/php.ini sudo sed -i 's/;cgi.fix_pathinfo=1/cgi.fix_pathinfo=0/' /etc/php8.3/php.ini ``` #### 6. 启动 PHP-FPM 服务 ```bash sudo cp sapi/fpm/php-fpm.service /etc/systemd/system/php8.3-fpm.service sudo systemctl daemon-reload sudo systemctl start php8.3-fpm sudo systemctl enable php8.3-fpm ``` #### 7. 验证安装 ```bash /usr/local/php8.3/bin/php -v ``` 预期输出:`PHP 8.3.11 (cli) ...` --- ### Nginx 集成配置 ```nginx server { ... location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/usr/local/php8.3/var/run/php-fpm.sock; } } ``` 重启服务: ```bash sudo systemctl restart nginx sudo systemctl restart php8.3-fpm ``` --- ### 测试 PHP 功能 创建测试文件: ```bash echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/phpinfo.php ``` 访问:`http://<your_ip>/phpinfo.php` 应显示 PHP 8.3 信息页 --- ### 常见问题解决 1. **编译失败** 检查依赖是否完整:`sudo apt build-dep php` 2. **FPM 启动失败** 检查 sock 文件权限: ```bash sudo chown -R www-data:www-data /usr/local/php8.3/var/run/ ``` 3. **扩展缺失** 重新编译添加扩展,例如 Redis: ```bash ./configure ... --enable-redis make clean && make && sudo make install ``` --- ### 相关问题 1. 如何在 PHP 8.3 中启用 OPcache 提升性能? 2. Armbian 上如何配置 PHP-FPM 进程池优化内存使用? 3. 如何为 PHP 8.3 添加 Redis 扩展支持? 4. PHP 8.3 与 MariaDB 集成的最佳实践是什么? 5. 如何升级通过源码编译安装的 PHP 版本? > 提示:源码编译安装可最大化发挥 ARM 设备性能,但需注意内存消耗,建议在编译时使用 `-j2` 替代 `-j$(nproc)` 防止内存溢出[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值