0

0

php怎么安装_在Raspberry Pi上安装PHP的完整步骤

爱谁谁

爱谁谁

发布时间:2025-09-29 16:29:02

|

852人浏览过

|

来源于php中文网

原创

在树莓派上安装PHP的核心是利用其Debian系统特性,通过apt安装PHP-FPM并与Nginx或Apache集成。首先更新系统:sudo apt update && sudo apt upgrade -y;然后安装PHP及常用扩展:sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip -y;接着配置Web服务器,以Nginx为例,编辑站点配置文件,确保location ~ .php$块中包含fastcgi_pass unix:/run/php/php*-fpm.sock; 指向正确的PHP版本socket路径;保存后测试并重启Nginx:sudo nginx -t && sudo systemctl restart nginx;最后创建/var/www/html/info.php文件,写入,浏览器访问该文件若显示PHP信息页则表示成功。常见问题包括PHP版本兼容性、fastcgi_pass路径错误、Nginx将PHP文件下载而非执行、权限不足及内存不足导致服务崩溃。解决方法包括使用默认仓库版本、检查日志、确认文件权限为www-data用户可读、调整PHP-FPM进程数(如pm.max_children设为5左右)以适应内存限制,并考虑启用OPcache提升性能。集成原理是Web服务器接收请求后,将.php文件通过FastCGI协议转发给PHP-FPM处理,再返回结果。优化建议包括启用OPcache、调优PHP-F

php怎么安装_在raspberry pi上安装php的完整步骤

在树莓派上安装PHP,核心思路就是利用其基于Debian的系统特性,通过包管理器(apt)来安装PHP及其FPM(FastCGI Process Manager)模块,再将它与你的Web服务器(通常是Nginx或Apache)进行集成,这样Web服务器就能把动态的PHP请求“转交”给PHP-FPM来处理了。说白了,就是搭一个能跑PHP的“小服务器”。

解决方案

首先,我们得确保树莓派的系统是最新的。这总是一个好习惯,能避免很多不必要的兼容性问题。

sudo apt update
sudo apt upgrade -y

接下来,我们安装PHP及其FPM模块。FPM是PHP官方推荐的FastCGI实现,尤其适合高性能和高并发的场景,在树莓派这种资源有限的设备上,它的效率优势更明显。

sudo apt install php-fpm -y

通常情况下,我们还需要一些常用的PHP扩展来支持各种应用,比如数据库连接、图像处理、字符串处理等。我个人建议至少安装以下这些:

立即学习PHP免费学习笔记(深入)”;

sudo apt install php-mysql php-curl php-gd php-mbstring php-xml php-zip -y

这些扩展基本能满足大部分Web应用的需求。安装完成后,PHP-FPM服务会自动启动。你可以通过以下命令检查其状态:

sudo systemctl status php-fpm

如果看到active (running),那就说明PHP-FPM已经正常工作了。

最后一步是配置你的Web服务器。这里以Nginx为例,因为它在树莓派上通常更轻量、高效。如果你用的是Apache,原理类似,只是配置文件的语法不同。

编辑Nginx的站点配置文件(比如/etc/nginx/sites-available/default,或者你自己的站点配置文件):

sudo nano /etc/nginx/sites-available/default

找到location ~ \.php$这部分,确保它看起来像这样(或者修改成这样):

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 这里的版本号请根据你实际安装的PHP版本调整,比如php8.2-fpm.sock
}

注意fastcgi_pass后面的socket路径,它会根据你安装的PHP版本有所不同。比如,如果你安装的是PHP 8.2,那路径就是unix:/run/php/php8.2-fpm.sock。可以通过ls /run/php/来确认具体的文件名。

保存并退出文件后,测试Nginx配置并重启Nginx服务:

sudo nginx -t
sudo systemctl restart nginx

现在,创建一个测试文件来验证PHP是否正常工作。

sudo nano /var/www/html/info.php

文件内容如下:

保存并退出。然后在浏览器中访问你的树莓派IP地址或域名,后面加上/info.php(例如:http://your_raspberry_pi_ip/info.php)。如果能看到PHP的详细信息页面,恭喜你,PHP已经在树莓派上成功运行了!

在树莓派上安装PHP时,常见的坑有哪些?

说实话,在树莓派这种资源相对有限的设备上折腾PHP,总会遇到些意想不到的小麻烦。我个人踩过不少坑,有些问题其实挺普遍的。

首先,PHP版本兼容性是个大头。树莓派OS(以前叫Raspbian)的apt仓库里,通常会提供一个稳定但可能不是最新的PHP版本。比如,你可能默认安装的是PHP 7.4,但你的Web应用可能需要PHP 8.x。如果你强行从第三方仓库安装最新版,可能会遇到依赖冲突,甚至把系统搞得一团糟。我通常建议,除非有明确需求,否则尽量使用apt仓库提供的默认版本,它与系统其他组件的兼容性最好。如果非要用新版本,可以考虑ondrej/php PPA,但那需要一些额外配置,而且要做好心理准备,可能会有小问题。

其次,Web服务器配置错误是另一个高发区。特别是Nginx,它的配置语法相对严格。最常见的错误就是fastcgi_pass指向的socket文件路径不对,或者Nginx没有正确地将.php请求传递给PHP-FPM。我记得有一次,我把location ~ \.php$这块儿写错了,导致Nginx直接把PHP文件当文本文件下载下来了,而不是执行。检查Nginx的错误日志(通常在/var/log/nginx/error.log)是定位这类问题的关键。另外,文件权限也是个隐形杀手,Nginx用户(通常是www-data)必须有权限读取你的Web目录和PHP文件。

再来就是内存和性能问题。树莓派,特别是老型号,内存真的不大。运行PHP应用,特别是那些内存占用大的框架(比如Laravel),很容易就把内存耗尽,导致服务崩溃或者响应缓慢。这时候,你可能会看到PHP-FPM进程被系统OOM killer杀掉。我通常会检查PHP-FPM的配置(/etc/php//fpm/pool.d/www.conf),适当调整pm.max_childrenpm.start_servers等参数,减少FPM进程数,以适应树莓派的内存限制。当然,增加SWAP空间也能缓解一时之需,但那会显著降低性能。

发卡宝-卡密寄售系统
发卡宝-卡密寄售系统

发卡宝是一个专业的软件卡密等虚拟商品在线交易平台,拥有多种兑换方式,费率低,结算快,正规企业平台一直稳定运营,24小时不间断提供自动发卡服务。【模板说明】试用版自带一套模板(响应式)【环境支持】PHP环境 / 200M或以上空间大小 / 开启父路径 / 设置index.php为默认首页 / 目录写入权限需要开启【数据库】MySQL【安装步骤】将文件上传至空间目录,运行“http://域名/inst

下载

最后,更新和升级。有时候你更新系统或者PHP版本,可能会导致一些扩展失效或者配置被重置。所以,每次大版本更新后,最好都重新检查一下PHP-FPM和Web服务器的配置,并验证所有服务是否正常。

PHP与Web服务器(Nginx/Apache)的集成怎么做?

PHP本身只是一个脚本解释器,它不能直接对外提供Web服务。它需要一个Web服务器(比如Nginx或Apache)来接收用户的HTTP请求,然后将需要PHP处理的部分“转交给”PHP-FPM(FastCGI Process Manager),PHP-FPM处理完后再把结果返回给Web服务器,最终由Web服务器发回给客户端。这个过程就是集成。

以Nginx为例:

Nginx的集成方式是基于FastCGI协议的。当Nginx收到一个.php文件的请求时,它会根据配置文件中的location ~ \.php$规则,将这个请求的所有相关信息(比如请求方法、URI、参数等)打包成FastCGI协议的数据流,然后通过一个Unix socket(或者TCP端口)发送给PHP-FPM。

核心配置片段通常是这样的:

server {
    listen 80;
    server_name your_domain_or_ip;
    root /var/www/html; # 你的Web根目录
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ =404; # 尝试查找文件或目录,否则返回404
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf; # 这是一个包含常用fastcgi参数的片段
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 重点:指定PHP-FPM的监听地址
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # 告诉PHP-FPM脚本的完整路径
        # fastcgi_param PATH_INFO $fastcgi_path_info; # 如果需要PATH_INFO
    }

    # 阻止访问隐藏文件
    location ~ /\.ht {
        deny all;
    }
}

这里的fastcgi_pass是关键,它指明了PHP-FPM的监听地址。unix:/run/php/php7.4-fpm.sock表示通过Unix域套接字通信,这是在同一台机器上最高效的方式。你也可以配置PHP-FPM监听一个TCP端口(例如127.0.0.1:9000),然后Nginx也指向这个端口,这在PHP-FPM和Nginx不在同一台机器时很有用,但在树莓派上,用socket更常见。

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;这行也至关重要,它告诉PHP-FPM,当前要执行的PHP脚本的完整文件路径是什么。如果没有它,PHP-FPM就不知道该运行哪个文件了。

以Apache为例:

Apache的集成方式通常有两种:mod_phpmod_fcgid(或者mod_proxy_fcgi配合PHP-FPM)。在树莓派上,为了性能和稳定性,我更推荐使用mod_proxy_fcgi与PHP-FPM结合的方式,它与Nginx的FastCGI模式类似,更现代化。

首先,你需要启用一些Apache模块:

sudo a2enmod proxy_fcgi setenvif
sudo a2enconf php7.4-fpm # 这里的版本号也要对应
sudo systemctl restart apache2

然后,在你的Apache站点配置文件中(通常是/etc/apache2/sites-available/000-default.conf),添加类似这样的配置:


    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    

    
        # 这里的路径也需要根据你的PHP版本调整
        SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"
    

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

SetHandler "proxy:unix:/run/php/php7.4-fpm.sock|fcgi://localhost/"这行是核心,它告诉Apache,所有匹配.php文件的请求,都通过proxy_fcgi模块,转发给unix:/run/php/php7.4-fpm.sock这个PHP-FPM进程来处理。

无论Nginx还是Apache,集成的目的都是一样的:让Web服务器能找到并正确地将PHP请求交给PHP-FPM处理,从而实现动态内容的生成。选择哪种Web服务器,更多是基于个人偏好、项目需求以及对性能的考量。在树莓派上,Nginx往往因其轻量和高效而更受欢迎。

如何优化树莓派上的PHP性能?

在树莓派这种硬件资源有限的平台上运行PHP,性能优化显得尤为重要。毕竟,我们不希望一个小小的Web应用就把树莓派“榨干”。我总结了一些实用的优化策略,希望能帮到你。

1. 启用并配置OPcache: 这是PHP性能优化的基石。OPcache通过将预编译的PHP脚本字节码存储在共享内存中,避免了每次请求都重新解析和编译脚本的开销。这对于CPU和SD卡读写性能都至关重要。 确保OPcache已启用(通常在PHP 7+版本中是默认启用的),并检查其配置(/etc/php//fpm/php.ini):

; 确保以下行没有被注释掉,或者设置为On
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128 ; 根据你的应用大小和树莓派内存调整,比如64MB或128MB
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=0 ; 生产环境设置为0,避免每次请求都检查文件更新

调整memory_consumption时要小心,不要设置得过大导致内存不足。

2. 优化PHP-FPM配置: PHP-FPM的进程池配置直接影响内存占用和并发处理能力。在/etc/php//fpm/pool.d/www.conf文件中,关注pm(进程管理)相关的参数:

pm = dynamic        ; 或 ondemand,取决于你的负载模式。dynamic更常见。
pm.max_children = 5  ; 根据树莓派的RAM大小调整,比如2GB内存的Pi,5-10个子进程可能比较合适。
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 500 ; 每个子进程处理500个请求后重启,防止内存泄漏。

pm.max_children是最关键的,设置过高会导致内存耗尽,过低则影响并发。我通常会从一个保守的值开始(比如5),然后根据实际负载和内存使用情况逐步调整。ondemand模式在空闲时会关闭进程,更省内存,但启动新进程会有延迟,适合低流量网站。

3. 使用轻量级Web服务器: Nginx通常比Apache更轻量、高效,尤其是在处理静态文件和作为PHP-FPM的反向代理时。如果你目前使用Apache,可以考虑切换到Nginx。它能释放宝贵的CPU和内存资源。

4. 优化数据库: 如果你的PHP应用依赖数据库(如MySQL/MariaDB),数据库本身的优化也至关重要。

  • 使用SQLite: 对于小型应用,SQLite可能是比MySQL/MariaDB更轻量的选择,因为它不需要独立的服务器进程。
  • 优化MySQL/MariaDB配置: 减少innodb_buffer_pool_size等内存占用参数,关闭不必要的日志。
  • 索引优化: 确保你的数据库查询有合适的索引。这是最有效的数据库优化手段之一。

5. 增加SWAP空间(谨慎): 如果树莓派内存确实不足,可以考虑增加SWAP空间。但请记住,SWAP是使用SD卡作为虚拟内存,SD卡的读写速度远低于RAM,频繁的SWAP操作会显著降低系统性能,并加速SD卡的损耗。所以,这更像是一个“救急”而非“治本”的方案。

6. 选择更快的SD卡: 树莓派的SD卡性能对整体系统I/O影响巨大。选择一张高质量、高速的Class 10或UHS-I级别的SD卡,能有效提升文件读写速度,从而间接改善PHP应用的响应时间。

7. 减少不必要的PHP代码和插件: 审视你的PHP应用,移除不必要的代码、库和插件。每一个额外的功能都可能增加内存占用和CPU开销。对于WordPress这类CMS,精简插件数量和主题也是一个好办法。

通过这些优化,你的树莓派将能更稳定、高效地运行PHP应用,即使是在资源受限的环境下,也能提供不错的用户体验。

相关专题

更多
php文件怎么打开
php文件怎么打开

打开php文件步骤:1、选择文本编辑器;2、在选择的文本编辑器中,创建一个新的文件,并将其保存为.php文件;3、在创建的PHP文件中,编写PHP代码;4、要在本地计算机上运行PHP文件,需要设置一个服务器环境;5、安装服务器环境后,需要将PHP文件放入服务器目录中;6、一旦将PHP文件放入服务器目录中,就可以通过浏览器来运行它。

2707

2023.09.01

php怎么取出数组的前几个元素
php怎么取出数组的前几个元素

取出php数组的前几个元素的方法有使用array_slice()函数、使用array_splice()函数、使用循环遍历、使用array_slice()函数和array_values()函数等。本专题为大家提供php数组相关的文章、下载、课程内容,供大家免费下载体验。

1667

2023.10.11

php反序列化失败怎么办
php反序列化失败怎么办

php反序列化失败的解决办法检查序列化数据。检查类定义、检查错误日志、更新PHP版本和应用安全措施等。本专题为大家提供php反序列化相关的文章、下载、课程内容,供大家免费下载体验。

1527

2023.10.11

php怎么连接mssql数据库
php怎么连接mssql数据库

连接方法:1、通过mssql_系列函数;2、通过sqlsrv_系列函数;3、通过odbc方式连接;4、通过PDO方式;5、通过COM方式连接。想了解php怎么连接mssql数据库的详细内容,可以访问下面的文章。

974

2023.10.23

php连接mssql数据库的方法
php连接mssql数据库的方法

php连接mssql数据库的方法有使用PHP的MSSQL扩展、使用PDO等。想了解更多php连接mssql数据库相关内容,可以阅读本专题下面的文章。

1444

2023.10.23

html怎么上传
html怎么上传

html通过使用HTML表单、JavaScript和PHP上传。更多关于html的问题详细请看本专题下面的文章。php中文网欢迎大家前来学习。

1235

2023.11.03

PHP出现乱码怎么解决
PHP出现乱码怎么解决

PHP出现乱码可以通过修改PHP文件头部的字符编码设置、检查PHP文件的编码格式、检查数据库连接设置和检查HTML页面的字符编码设置来解决。更多关于php乱码的问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1529

2023.11.09

php文件怎么在手机上打开
php文件怎么在手机上打开

php文件在手机上打开需要在手机上搭建一个能够运行php的服务器环境,并将php文件上传到服务器上。再在手机上的浏览器中输入服务器的IP地址或域名,加上php文件的路径,即可打开php文件并查看其内容。更多关于php相关问题,详情请看本专题下面的文章。php中文网欢迎大家前来学习。

1307

2023.11.13

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

【李炎恢】ThinkPHP8.x 后端框架课程
【李炎恢】ThinkPHP8.x 后端框架课程

共50课时 | 4.5万人学习

nginx浅谈
nginx浅谈

共15课时 | 0.8万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号