当你去打开php.ini文件之时,你会发觉里面那些密密麻麻的参数。对网站运行速度的快慢以及安全性有着直接的决定性作用。大量的人在装好PHP之后便将其放置在那里而不去管它。结果导致网站出现卡顿现象,甚至还被黑客攻击。实际上这都是因为参数没有调整正确所造成的。接下来这6个方面的优化措施。可以使得你网站的PHP运行环境在速度方面既快,在稳定性方面又稳。
调整核心参数释放性能
内存限制相关的那个参数,名为memory_limit,其预设情况之下,仅仅只有128M这个数值,对此而言呢像WordPress或者Drupal这类较为复杂的系统,那是根本就不够用。我把这个具体的值调整到256M之后,在后台进行编辑文章的相关操作时,就再也没有出现过内存耗尽所导致的白屏错误。
max_execution_time对脚本最长运行时间予以控制,其默认30秒常常会致使导入数据出现超时情况。在将其设置为120秒之后,一次性实施导入上万条用户记录的操作也能够顺利达成。
对上传文件大小进行限制时,upload_max_filesize的默认数值是2M,当前视频以及图片网站数量日益攀升,若想满足媒体上传所需条件,需将其调整为64M。与此同时,千万不要忘记post_max_size的设置要比upload_max_filesize所调整后的数值更大。
开发之时,display_errors颇为有用,然而,于生产环境当中,务必要将其设为Off。曾有一回,客户服务器意外暴露了数据库密码,缘由便是此参数未关闭,致使黑客径直瞧见错误信息里的连接凭证。
启用字节码缓存加速
PHP每一次请求之时,均需再度解析编译脚本,于此流量庞大之际,这着实极为耗费资源。当启用OPcache后,已然编译好的字节码直接存放进内存之中,进而得以重复运用。
经确认OPcache已被安装之后,于php.ini里将opcache.enable设置为1以此打开该功能。对于内存分配而言,opcache.memory_consumption设置成128便足以供大部分网站去使用,可以,倘若数值过小则缓存会不足,要是太大了又会造成内存的浪费。
根据你项目文件数,来设置opcache.max_accelerated_files=4000。在我前些时候经历的一个电商网站里,文件数量特别多,一直设置到8000,才将所有文件都缓存起来。
opcache.revalidate_freq等于60,这意味着每隔60秒就要检查文件是不是更新了。对于开发环境而言,可以设置得短一些,而生产环境设置得长一些的话,性能会更好点。
优化数据库连接方式
数据库的连接属于极为耗费资源的操作行为,每一次去构建连接都得经历TCP握手这一过程,还要进行权限验证操作。运用持久连接能够达成连接的重复利用,进而削减这些不必要的花销支出。
于PDO里头启用持久化是颇为简易的,于new PDO之际添加上参数array(PDO::ATTR_PERSISTENT => true)便可以了。我曾对一个论坛予以优化,在开启持久连接之后,数据库连接数由200降至了50。
处在循环之时去执行SQL这可是性能方面的杀手呀。往昔有客户的网站运行之时慢到处于无法打开的情形状 ,去查看代码后看到在循环之中嵌套了查询操作 ,一百次的循环就要执行一百次SQL。当改成是批量查询以后速度得到了提升并且提升幅度达到了十倍。
至关重要的是设置mysqlnd连接参数,其中mysqlnd.net_read_timeout = 60可防止网络出现异常状况时脚本陷入卡死状态。并且要开启mysqlnd.reconnect = On使得断开的连接能够自动进行重连。
开启Gzip压缩传输
加载速度由网页传输的数据量直接决定,启用Gzip压缩能将HTML、CSS、JavaScript压缩大约70%,效果显著且立竿见影。
倘若在php.ini里将zlib.output_compression开启为On,那么PHP会自行对输出内容予以压缩。把压缩级别设定为zlib.output_compression_level = 6这乃是最为均衡的,要是太高的话CPU消耗就会很大,而且压缩率提升的幅度有限。
要是你选用Nginx,那么建议于nginx.conf里启动gzip,使得Web服务器去处理压缩这一事宜,其效率相较于PHP层而言更加高. 即便两者同时开启也是不会有问题的,不过会多出一层处理。
合理设置文件权限
文件权限的设置要是不恰当的话,那可是极为危险的。曾经有一回,客户的网站被上传了木马,原因便是在上传目录赐予了777权限,如此一来,任何一个人都能够进行写入以及执行的操作。
形如config.php的配置文件将权限设置为644,此权限下仅有所有者具备可写权限,其他人均为只读权限。如此这般,即便网站存在漏洞,攻击者亦无法对数据库配置进行修改。
要上传目录,缓存目录需要具备写入权限,以755进行设置就行,别给777。与此同时,要保证目录所有者跟Web服务用户是一致的,不然的话,会出现写入失败的情况。
在php.ini里头将危险函数予以关闭这种做法同样能够提升安全性,设置disable_functions等于exec、passthru、shell_exec、system乃是禁用那些能够执行系统命令的函数啊。
关闭不必要的信息泄露
PHP 默认情况下,会于响应头当中,将版本号给泄露出来,举例说明,像 X - Powered - By: PHP/7.4.33 这样。一旦黑客知晓了版本,便能够依据已知的漏洞展开攻击。
给expose_php设置为Off以此来将版本信息隐藏掉,再添加ServerTokens Prod以及ServerSignature Off(针对Apache的情况),或者把相应版本隐藏起来(此项针对Nginx而言),以此达成双重保险的目的。
在不需要进行远程文件操作的情形下,对于allow_url_fopen以及allow_url_include,强烈地去建议把它们关闭掉。远程文件包含可是属于常见的攻击方式,将其关掉的话,能够堵住一个很大的漏洞。
紧接着,核查一回open_basedir的设置情况,以此限定PHP仅仅能够访问指定的目录,哪怕出现某个脚本尝试跨越目录去读取敏感文件的状况,也将会被拦截住。
你于PHP配置优化期间碰到过最为令人头疼的问题是啥,欢迎于评论区去分享你的经历,点赞并收藏这一片文章,下次配置服务器之际把它拿出来依照着进行实施便可。


还没有评论,来说两句吧...