我们在用服务器配置网站的时候,对于PHP软件的参数配置中upload_max_filesize设置还是比较讲究的。如果配置的不好,可能负载在线人数就支持不多,如果配置的好可以负载就更高一些。

upload_max_filesize 是 PHP 配置项,用于设置允许上传的单个文件的最大大小。下面是一些设置 upload_max_filesize 的技巧:

1、参数值

upload_max_filesize 的值可以使用字节(例如 100M 表示 100 兆字节)或其他有效的单位(如 K、KB、M、MB、G、GB)。确保正确理解和使用适当的单位。

编辑 php.ini 文件:在服务器上找到 php.ini 文件,并使用文本编辑器打开。搜索 upload_max_filesize 配置项,在等号后面设置所需的值。例如:

upload_max_filesize = 100M

2、设置合适的文件大小限制

根据实际需求和应用场景,设置适当的文件大小限制。考虑上传文件的类型和服务器资源的可用性,以避免出现过大的文件导致服务不稳定或资源耗尽的问题。

3、重启服务器

保存 php.ini 文件并重新启动服务器,使新的配置生效。这样,PHP 将按照新的 upload_max_filesize 值处理文件上传请求。

4、处理其他相关配置项

上传文件大小还受到其他相关 PHP 配置项的影响,如 post_max_size 和 memory_limit。确保将这些配置项与 upload_max_filesize 协调一致,以确保完整的文件上传过程。

5、考虑安全性

在设置 upload_max_filesize 时,要谨慎考虑安全性问题。确保合理限制上传文件的大小,以防止恶意用户滥用和服务器资源受到过大文件的影响。

总结,一般我们在用成熟的一键安装面板和软件包的时候,会自动根据我们的服务器配置设置初始的值,如果我们后续调整过服务器配置那就需要自己手工再调整PHP的一些参数值。

在 PHP 中获取 URL 参数可以通过 $_GET 超全局变量来实现。

例如,如果您想获取名为 id 的 URL 参数的值,可以使用以下代码:

$id = $_GET['id'];

如果 URL 中有多个参数,您可以通过类似的方式获取它们的值,例如:

$id = $_GET['id'];
$name = $_GET['name'];

请注意,$_GET 超全局变量仅能获取通过 GET 方法传递的参数,如果您使用 POST 方法传递参数,需要使用 $_POST 超全局变量或者 $_REQUEST 超全局变量获取参数。

一、问题描述:

用VSCode书写代码利用mysqli语句连接Mysql数据库的时候,没有出现智能提示:

二、原因:没有安装PHP Intelephense插件(注意有相似名字的插件不要安装错误)

三、安装:PHP Intelephense

打开VSCode编辑器,

(1)点击扩展;

(2)在打开的扩展商店中搜索“PHP Intelephense”;

(3)安装(下图为已经安装成功的截图);

四、配置:PHP Intelephense 插件:

打开VS Code编辑器,(1)点击左下角的小齿轮图标【管理】->(2)选择【命令面板】

(3)输入”settings.json”来搜索;点击【首选项:打开用户设置 (JSON)】即可进入用户设置settings.json文件

(4)配置:php.validate.executablePath路径(按自身情况填写,就是php.exe文件的路径),比如我的:”php.validate.executablePath”:

“D:\\phpstudy_pro\\Extensions\\php\\php7.3.4nts\\php.exe”

五、验证:插件使用效果

前言

最近有些 MJJ 采集博客,使内存有些超标,看了下文件发现军哥的 LNMP 的php-fpm配置是按最低标准设置的,这里可以稍微修改下,适用于自己的 VPS 配置。

修改说明

php-fpm设置动态还是静态,要根据你的 VPS 内存来定,如果内存小,比如 1G,那么指定静态的进程数量更加有利于服务器的稳定。这样可以保证 php-fpm 只获取够用的内存,将不多的内存分配给其他应用去使用,会使系统的运行更加畅通。

如果你的内存足够大,例如 4G 或 4G 以上你可以将 pm 设置成静态(static),因为这样不需要进行额外的进程数目控制,会提高效率(频繁开关 php-fpm 进程也会有时滞的)所以内存够大的情况下开静态效果会更好。
比如 4GB 内存可以设置为pm.max_children = 80,那么按照每个进程占用 15~30M 内存计算,php-fpm 耗费的内存就能控制在 1.2G-2.5G 的样子。

这里主要修改几个参数,说明一下:

  • pm.max_children:静态方式下开启的 php-fpm 进程数量;
  • pm.start_servers:动态方式下的起始 php-fpm 进程数量;
  • pm.min_spare_servers:动态方式下的最小备用 php-fpm 进程数量;
  • pm.max_spare_servers:动态方式下的最大备用 php-fpm 进程数量;

这里是军哥 LNMP 的/usr/local/php/etc/php-fpm.conf默认 1G 配置,LNMP 也会根据内存大小安装后配置不同,仅用于参考

pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 6
pm.max_requests = 1024
pm.process_idle_timeout = 10s
request_terminate_timeout = 100
request_slowlog_timeout = 0
slowlog = var/log/slow.log

博主的机器是 1G 内存,修改后的配置可以参考,具体参数要设多少,可自己慢慢测试

pm = dynamic
pm.max_children = 24
pm.start_servers = 6
pm.min_spare_servers = 3
pm.max_spare_servers = 9
pm.max_requests = 2048
pm.process_idle_timeout = 10s
request_terminate_timeout = 120
request_slowlog_timeout = 0
slowlog = var/log/slow.log

结语

博主在使用pm = dynamic,  有时日志(/usr/local/php/var/log/php-fpm.log)里提示  pm.max_children  过小,  调大  pm.max_children  值, 日志里的 pm.max_children  警告就没有了。

解决执行 pecl upgrade-all 提示 Error getting channel info from pear.php.net: Connection to `ssl://pear.php.net:443' failed:Connection to 'ssl://pecl.php.net:443' failed: Unable to find the socket 错误。

出现这个错误主要是因为缺失默认证书导致的,具体原因不明。

下面说一下解决方案:

1、查看 default_cert_file 的路径

php -r "print_r(openssl_get_cert_locations());"

2、下载证书

wget -P /etc/ssl/ http://curl.haxx.se/ca/cacert.pem
chmod 744 /etc/ssl/cacert.pem

注意:其中 /etc/ssl/cacert.pem 替换为自己的真实路径

1、准备编译环境

yum install autoconf automake libtool make gcc libwebp libwebp-devel -y

2、下载并解压

wget https://imagemagick.org/download/ImageMagick.tar.gz
tar -xzf ImageMagick.tar.gz
#注意:如果是CnetOS 8则需要输入完整路径
cd ImageMagick*

3、配置并编译

由于7.0之后的版本默认开启webp支持,所以不再需要 --with-webp 参数

./configure --prefix=/usr
make
sudo make install
ldconfig

4、PHP 安装 imagick 模块

pecl install imagick

会提示:Please provide the prefix of ImageMagick installation [autodetect] :,输入ImageMagick的安装路径:

/usr

回车,等待完成安装。

5、配置 imagick 模块

在php.ini文件加入一行

extension=imagick.so

然后重启 php-fpm,使 imagick 模块生效

CentOS 7 源码安装 PHP 7.4 正式版教程

1、准备编译环境

yum -y install epel-release yum-utils
yum config-manager --set-enabled PowerTools
yum -y install gcc gcc-c++ make autoconf bzip2 bzip2-devel libpng libpng-devel freetype-devel gmp-devel readline-devel curl-devel libxml2-devel libjpeg-devel bison openssl-devel uw-imap-devel libc-client sqlite-devel libicu-devel libedit-devel libxslt-devel oniguruma oniguruma-devel

以及 libzip

2、下载并解压

wget https://www.php.net/distributions/php-7.4.0.tar.bz2
tar -jxf php-7.4.0.tar.bz2
cd php-7.4.0

3、配置并构建 PHP。在此步骤您可以使用很多选项自定义 PHP,例如启用某些扩展等。 运行 ./configure –help 命令来获得完整的可用选项清单。 在本示例中,我们仅进行包含 PHP-FPM 和 MySQL 支持的简单配置。

./configure --prefix=/usr \
   --sysconfdir=/etc/php \
   --with-config-file-path=/etc/php \
   --with-config-file-scan-dir=/etc/php/php.d \
   --bindir=/usr/bin \
   --docdir=/usr/share/doc \
   --sbindir=/usr/sbin \
   --libdir=/usr/lib64/php \
   --with-libdir=/usr/lib64/php \
   --libexecdir=/usr/libexec \
   --localstatedir=/var \
   --includedir=/usr/include \
   --localedir=/usr/local \
   --datarootdir=/usr/share \
   --datadir=/usr/share/php \
   --mandir=/usr/share/man \
   --infodir=/usr/share/info \
   --enable-fpm \
   --with-fpm-user=www-data \
   --with-fpm-group=www-data \
   --enable-mysqlnd \
   --enable-mysqlnd-compression-support \
   --enable-json \
   --with-openssl-dir \
   --with-zlib-dir \
   --with-freetype \
   --enable-gd-jis-conv \
   --enable-ftp \
   --enable-filter \
   --enable-fileinfo \
   --with-curl \
   --with-iconv \
   --with-bz2 \
   --with-zlib \
   --with-zip \
   --with-xsl \
   --with-jpeg \
   --with-webp \
   --with-xpm \
   --without-iconv \
   --with-kerberos \
   --with-imap-ssl \
   --with-openssl \
   --enable-dom \
   --with-gettext \
   --with-mysqli=mysqlnd \
   --enable-pdo \
   --with-pdo-mysql=mysqlnd \
   --enable-simplexml \
   --enable-session \
   --enable-sysvsem \
   --enable-sysvmsg \
   --enable-sockets \
   --with-pear \
   --with-xmlrpc \
   --with-mhash \
   --enable-bcmath \
   --with-cdb \
   --enable-exif \
   --with-gmp \
   --enable-mbstring \
   --enable-mbregex \
   --with-readline \
   --enable-shmop \
   --enable-soap \
   --enable-sockets \
   --enable-pcntl \
   --enable-intl \
   --enable-re2c-cgoto \
   --with-libedit
make
sudo make install

4、创建配置文件,并将其复制到正确的位置。

cp php.ini-production /etc/php/php.ini
cp sapi/fpm/php-fpm.conf /etc/php/php-fpm.conf
cp sapi/fpm/www.conf /etc/php/php-fpm.d/www.conf
cp sapi/fpm/php-fpm.service /etc/systemd/system/php-fpm.service

5、需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini:

vi /etc/php/php.ini

定位到 cgi.fix_pathinfo= 并将其修改为如下所示:

cgi.fix_pathinfo=0

6、配置 php-fpm 服务

sudo systemctl start php-fpm

检查是否启动成功

sudo systemctl status php-fpm

如果出现错误:ERROR: [pool www] cannot get uid for user 'www-data'
则新建www-data 用户组:

groupadd www-data
useradd -g www-data -s /sbin/nologin -M www-data

设置服务自启动

sudo systemctl enable php-fpm

本文档未涵盖对 php-fpm 进行进一步配置的信息,如果您需要更多信息,请查阅相关文档。

PHP 7.4.0 发布了,此版本标志着 PHP 7 系列的第四次特性更新。

PHP 7.4.0 进行了许多改进,并带来了一些新特性,包括:

Typed Properties  类型属性

类属性现在支持类型声明,以下示例将强制 $User-> id 只能分配 int 值,而 $User-> name 只能分配 string 值。

<?php
class User {
    public int $id;
    public string $name;
}
?>

Arrow Functions  箭头函数

箭头函数提供了用于定义具有隐式按值作用域绑定的函数的简写语法。

<?php
$factor = 10;
$nums = array_map(fn($n) => $n * $factor, [1, 2, 3, 4]);
// $nums = array(10, 20, 30, 40);
?>

将闭包传递给 array_map 或 array_filter 等函数时,它可以发挥极大的作用。

// A collection of Post objects $posts = [/* … */];

$ids = array_map(fn($post) => $post->id, $posts);

Limited Return Type Covariance and Argument Type Contravariance  有限返回类型协变与参数类型逆变

仅当使用自动加载时,才提供完全协变/逆变支持。在单个文件中,只能使用非循环类型引用,因为所有类在被引用之前都必须可用。

<?php
class A {}
class B extends A {}

class Producer {
    public function method(): A {}
}
class ChildProducer extends Producer {
    public function method(): B {}
}
?>

Unpacking Inside Arrays  打包内部数组

<?php
$parts = ['apple', 'pear'];
$fruits = ['banana', 'orange', ...$parts, 'watermelon'];
// ['banana', 'orange', 'apple', 'pear', 'watermelon'];
?>

Numeric Literal Separator  数值文字分隔符

数字文字可以在数字之间包含下划线。

<?php
6.674_083e-11; // float
299_792_458;   // decimal
0xCAFE_F00D;   // hexadecimal
0b0101_1111;   // binary
?>

Weak References  弱引用

弱引用使程序员可以保留对对象的引用,不会阻止对象被销毁。

Allow Exceptions from __toString()  允许从 __toString() 抛出异常

现在允许从 __toString() 引发异常,以往这会导致致命错误,字符串转换中现有的可恢复致命错误已转换为 Error 异常。

Opcache Preloading  Opcache 预加载

新增 Opcache 预加载支持。

此外还有一些弃用,以及从核心中删除一些扩展,详情查看:

CentOS 一键搭建 WordPress 中文最新版, 本教程仅提供学习,请勿用于商业用途和不法行为。

一键搭建脚本仅适用于CentOS 7新服务器,不支持已安装MySQL、 Nginx 、PHP的服务器。

脚本已多次通过CentOS 7系统搭建测试,暂未发现问题。如有疑问请发邮件联系我:lixiaoting0405@163.com

一键脚本会自动安装以下主要组件或软件:

  • MySQL 8.x 最新稳定版
  • Nginx 最新稳定版(支持 http2)
  • PHP 7.3.x 最新稳定版(支持 webp)
  • WordPress 中文最新稳定版
  • 其他:CMake 最新稳定版、OpenSSL 最新稳定版

建议最低硬件配置:1核/1G内存/10G硬盘/1M公网带宽/1个固定公网IPV4

1、执行一键脚本

bash <(wget --no-check-certificate -qO- https://down.24kplus.com/linux/wordpress/wordpress-install.sh)

2、根据shell脚本提示输入相关信息

1、提示设置您要绑定的域名,输入域名后按回车,也可以直接按回车使用IP地址作为WordPress访问地址

一键安装  WordPress 步骤一
一键搭建 WordPress 步骤一

2、接下来选择输入MySQL数据库root用户密码,如果不知道密码规则建议使用默认密码,否者可能导致由于密码不符合MySQL密码强度要求安装失败

 一键安装  WordPress 步骤二
一键 搭建 WordPress 步骤二

4、 耐心等待安装完成,会有如下图安装成功的提示,包含访问地址,数据库端口,数据库密码等信息

一键搭建WordPress已完成
一键搭建WordPress已完成

如果你没有记住配置信息也不要紧,一键脚本早已帮您记录到当前目录下mysql-config.txt文件。

至此已安装完毕

WordPress
WordPress

PHP (超文本预处理器)

PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点,利于学习,使用广泛,主要适用于Web开发领域。PHP 独特的语法混合了C、Java、Perl以及PHP自创的语法。它可以比CGI或者Perl更快速地执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。

安装

yum源不存在php7.x,我们可以通过源码方式安装php7.x。

1、准备编译环境

yum -y install autoconf gcc bzip2 bzip2-devel libpng libpng-devel freetype-devel gmp-devel readline-devel curl-devel libxml2-devel libjpeg-devel bison openssl-devel

以及 libzip

2、下载并解压

wget https://www.php.net/distributions/php-7.3.24.tar.bz2 \
&& tar -jxf php-7.3.24.tar.bz2 \
&& cd php-7.3.24

3、配置并构建 PHP。在此步骤您可以使用很多选项自定义 PHP,例如启用某些扩展等。 运行 ./configure –help 命令来获得完整的可用选项清单。 在本示例中,我们仅进行包含 PHP-FPM 和 MySQL 支持的简单配置。

./configure --prefix=/usr \
   --sysconfdir=/etc/php \
   --with-config-file-path=/etc/php \
   --with-config-file-scan-dir=/etc/php/php.d \
   --bindir=/usr/bin \
   --docdir=/usr/share/doc \
   --sbindir=/usr/sbin \
   --libdir=/usr/lib64/php \
   --with-libdir=/usr/lib64/php \
   --libexecdir=/usr/libexec \
   --localstatedir=/var \
   --runstatedir=/run \
   --includedir=/usr/include \
   --localedir=/usr/local \
   --datarootdir=/usr/share \
   --datadir=/usr/share/php \
   --mandir=/usr/share/man \
   --infodir=/usr/share/info \
   --enable-fpm \
   --with-fpm-user=www-data \
   --with-fpm-group=www-data \
   --enable-mysqlnd \
   --enable-mysqlnd-compression-support \
   --enable-json \
   --with-openssl-dir \
   --with-jpeg-dir \
   --with-png-dir \
   --with-zlib-dir \
   --with-freetype-dir \
   --enable-gd-jis-conv \
   --enable-ftp \
   --enable-filter \
   --enable-fileinfo \
   --with-curl \
   --with-iconv \
   --with-bz2 \
   --with-zlib \
   --with-pcre-regex \
   --with-openssl \
   --enable-dom \
   --with-gettext \
   --with-mysqli=mysqlnd \
   --enable-pdo \
   --with-pdo-mysql=mysqlnd \
   --with-pdo-sqlite \
   --enable-simplexml \
   --enable-session \
   --enable-sysvsem \
   --enable-sysvmsg \
   --enable-sockets \
   --with-libxml-dir \
   --with-pear \
   --enable-opcache \
   --with-xmlrpc \
   --with-mhash \
   --with-sqlite3 \
   --enable-bcmath \
   --with-cdb \
   --enable-exif \
   --with-gd \
   --with-gmp \
   --enable-mbstring \
   --enable-mbregex \
   --enable-mbregex-backtrack \
   --with-onig \
   --with-readline \
   --enable-shmop \
   --enable-zip \
&& make \
&& sudo make install

4、创建配置文件,并将其复制到正确的位置。

cp php.ini-production /etc/php/php.ini \
&& cp sapi/fpm/php-fpm.conf /etc/php/php-fpm.conf \
&& cp sapi/fpm/www.conf /etc/php/php-fpm.d/www.conf \
&& cp sapi/fpm/php-fpm.service /etc/systemd/system/php-fpm.service

5、需要着重提醒的是,如果文件不存在,则阻止 Nginx 将请求发送到后端的 PHP-FPM 模块, 以避免遭受恶意脚本注入的攻击。
将 php.ini 文件中的配置项 cgi.fix_pathinfo 设置为 0 。
打开 php.ini:

vim /etc/php/php.ini

定位到 cgi.fix_pathinfo= 并将其修改为如下所示:

cgi.fix_pathinfo=0

6、配置 php-fpm 服务

sudo systemctl start php-fpm

检查是否启动成功

sudo systemctl status php-fpm

如果出现错误:ERROR: [pool www] cannot get uid for user 'www-data'
则新建www-data 用户组:

groupadd -r www-data
useradd -g www-data -s /sbin/nologin -M -r www-data

设置服务自启动

sudo systemctl enable php-fpm

本文档未涵盖对 php-fpm 进行进一步配置的信息,如果您需要更多信息,请查阅相关文档。