<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>PHP on Infinite Script</title><link>https://www.infinitescript.com/tags/php/</link><description>Recent content in PHP on Infinite Script</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Fri, 02 Feb 2024 11:41:27 +0000</lastBuildDate><atom:link href="https://www.infinitescript.com/tags/php/index.xml" rel="self" type="application/rss+xml"/><item><title>Infinite Servers</title><link>https://www.infinitescript.com/project/infinite-servers/</link><pubDate>Fri, 02 Feb 2024 11:41:27 +0000</pubDate><guid>https://www.infinitescript.com/project/infinite-servers/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Infinite Servers&lt;/strong&gt; is a self-hosted server fleet monitor built around a single design constraint: the agent must run completely unprivileged. Each monitored host installs a PHP script that runs as &lt;code&gt;nobody&lt;/code&gt;, reads &lt;code&gt;/proc&lt;/code&gt;, and pushes status every 15 seconds to a central dashboard. No root access, no persistent daemon with elevated privileges, no external database server.&lt;/p&gt;&#10;&lt;p&gt;This design was motivated by the security risks that plague popular alternatives. Tools like &lt;a href="https://github.com/naiba/nezha"&gt;Nezha&lt;/a&gt; require agents to run as root, which creates a severe blast-radius problem: if the dashboard is compromised, an attacker can push arbitrary commands to every connected host with full system privileges. Two recent CVEs illustrate just how real this risk is:&lt;/p&gt;</description></item><item><title>Create Unit Testing Cases in Zend Framework</title><link>https://www.infinitescript.com/2015/03/create-unit-testing-cases-in-zend-framework/</link><pubDate>Tue, 03 Mar 2015 02:30:45 +0000</pubDate><guid>https://www.infinitescript.com/2015/03/create-unit-testing-cases-in-zend-framework/</guid><description>&lt;p&gt;A solid unit test suite is essential for ongoing development in large projects, especially those with many people involved. Going back and manually testing every individual component of an application after every change is impractical. Your unit tests will help alleviate that by automatically testing your application’s components and alerting you when something is not working the same way it was when you wrote your tests.&lt;/p&gt;&#10;&lt;p&gt;The Zend Framework 2 API uses PHPUnit, and so does this tutorial application. A detailed explanation of unit testing is beyond the scope of this tutorial, so we will only provide sample tests for the components in the pages that follow. This tutorial assumes that you already have PHPUnit installed.&lt;/p&gt;</description></item><item><title>Create CDN View Helper in Zend Framework 2</title><link>https://www.infinitescript.com/2015/02/create-cdn-view-helper-in-zend-framework-2/</link><pubDate>Thu, 26 Feb 2015 11:26:08 +0000</pubDate><guid>https://www.infinitescript.com/2015/02/create-cdn-view-helper-in-zend-framework-2/</guid><description>&lt;p&gt;In this article, you will learn how to create a custom view helper in Zend Framework 2. A concrete example will be used; a helper which generates links for a subdomain, intended for storing static files. This is especially useful if you wish to use a Content Delivery Network (CDN). With very little modification, the helper can be made generic to support links to subdomains for all purposes.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Zend Framework 2 has reached end of life. In 2019 the project moved to the Linux Foundation and was renamed &lt;a href="https://getlaminas.org/"&gt;Laminas&lt;/a&gt;, so the &lt;code&gt;Zend\&lt;/code&gt; namespaces below are now &lt;code&gt;Laminas\&lt;/code&gt; (for example &lt;code&gt;Zend\View\Helper\AbstractHelper&lt;/code&gt; becomes &lt;code&gt;Laminas\View\Helper\AbstractHelper&lt;/code&gt;). The view-helper mechanics are otherwise unchanged, so this post is kept as a historical walkthrough. For a real project, run the namespaces through the &lt;a href="https://docs.laminas.dev/migration/"&gt;Laminas migration guide&lt;/a&gt; and follow the current &lt;a href="https://docs.laminas.dev/laminas-view/v3/helpers/advanced-usage/"&gt;custom view helper docs&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Building and Installing HHVM on CentOS 7</title><link>https://www.infinitescript.com/2015/02/building-and-installing-hhvm-on-centos-7/</link><pubDate>Sat, 14 Feb 2015 09:12:09 +0000</pubDate><guid>https://www.infinitescript.com/2015/02/building-and-installing-hhvm-on-centos-7/</guid><description>&lt;h2 id="whats-hhvm"&gt;What&amp;rsquo;s HHVM?&lt;/h2&gt;&#10;&lt;p&gt;HHVM is an &lt;a href="https://github.com/facebook/hhvm"&gt;open-source&lt;/a&gt; virtual machine designed for executing programs written in &lt;a href="https://hacklang.org/"&gt;Hack&lt;/a&gt; and &lt;a href="https://www.php.net/"&gt;PHP&lt;/a&gt;. Instead of interpreting PHP directly, it uses a just-in-time (JIT) compiler to reach much higher throughput while staying compatible with existing PHP code. Facebook, which created HHVM, reported roughly a 9x gain in web request throughput and a 5x drop in memory use over the old PHP 5.2 + APC engine, and back in 2015 HHVM could run most of the popular PHP frameworks out of the box.&lt;/p&gt;</description></item><item><title>TestZilla</title><link>https://www.infinitescript.com/project/testzilla/</link><pubDate>Thu, 01 Jan 2015 11:40:00 +0000</pubDate><guid>https://www.infinitescript.com/project/testzilla/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Crowd testing&lt;/strong&gt; is a software testing approach where a distributed group of real users, rather than an in-house QA team, tests a product across a wide variety of devices, operating systems, and usage scenarios. The goal is to surface bugs that structured internal testing tends to miss, at a fraction of the cost of a dedicated test lab.&lt;/p&gt;&#10;&lt;p&gt;TestZilla is an open-source crowd testing platform designed to connect two parties: &lt;strong&gt;hunters&lt;/strong&gt; (volunteer testers who find and report bugs) and &lt;strong&gt;developers&lt;/strong&gt; (product owners who register their software and receive the reports). Hunters earn points for accepted reports, creating a lightweight incentive loop that encourages quality submissions. The project started as a Spring MVC application and was later fully rebuilt using the Phalcon framework to support a faster continuous delivery workflow.&lt;/p&gt;</description></item><item><title>Build Tengine, MariaDB and PHP on Ubuntu 14.04</title><link>https://www.infinitescript.com/2014/11/build-tengine-mariadb-and-php-on-ubuntu-14-04/</link><pubDate>Sat, 22 Nov 2014 03:40:35 +0000</pubDate><guid>https://www.infinitescript.com/2014/11/build-tengine-mariadb-and-php-on-ubuntu-14-04/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;Nginx is one of the most popular web servers in the world and is responsible for hosting some of the largest and highest-traffic sites on the internet. Tengine is a branch of Nginx which is created by &lt;a href="http://www.alibaba.com"&gt;Alibaba Inc&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;MariaDB is a database server developed by some of the original authors of MySQL and offers drop-in replacement functionality.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This guide is from 2014 and builds every component from source on Ubuntu 14.04, which has long since reached end-of-life. On a current system you would install Tengine/Nginx, MariaDB, and PHP from the official APT repositories and manage them with &lt;code&gt;systemd&lt;/code&gt; instead of the SysV &lt;code&gt;init.d&lt;/code&gt; scripts shown below. It&amp;rsquo;s kept here as a historical walkthrough.&lt;/p&gt;</description></item><item><title>Difference Between require and include in PHP</title><link>https://www.infinitescript.com/2014/11/difference-between-require-and-include-in-php/</link><pubDate>Fri, 14 Nov 2014 06:33:06 +0000</pubDate><guid>https://www.infinitescript.com/2014/11/difference-between-require-and-include-in-php/</guid><description>&lt;p&gt;One of the most common questions I get from PHP beginners is: why are there four different ways to pull one file into another?&lt;/p&gt;&#10;&lt;p&gt;There is &lt;a href="https://www.php.net/manual/en/function.include.php"&gt;include&lt;/a&gt;, &lt;a href="https://www.php.net/manual/en/function.include-once.php"&gt;include_once&lt;/a&gt;, &lt;a href="https://www.php.net/manual/en/function.require.php"&gt;require&lt;/a&gt;, and &lt;a href="https://www.php.net/manual/en/function.require-once.php"&gt;require_once&lt;/a&gt;. They look almost interchangeable, but picking the wrong one can either hide a fatal bug or crash a page that should have kept running.&lt;/p&gt;&#10;&lt;p&gt;The four are really just combinations of two independent choices:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;&lt;code&gt;include&lt;/code&gt; vs &lt;code&gt;require&lt;/code&gt;&lt;/strong&gt;: what happens when the file is missing. &lt;code&gt;include&lt;/code&gt; emits a warning and keeps going; &lt;code&gt;require&lt;/code&gt; stops the script with a fatal error.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;plain vs &lt;code&gt;_once&lt;/code&gt;&lt;/strong&gt;: how many times the file may be loaded. The plain form loads the file on every call; the &lt;code&gt;_once&lt;/code&gt; form loads it at most once per request.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;One note before we start: despite the parentheses you often see, &lt;code&gt;include&lt;/code&gt; and &lt;code&gt;require&lt;/code&gt; are &lt;em&gt;language constructs&lt;/em&gt;, not functions. Both &lt;code&gt;require 'core.php';&lt;/code&gt; and &lt;code&gt;require('core.php');&lt;/code&gt; work, but the manual recommends the parenthesis-free form, which is what I&amp;rsquo;ll use throughout.&lt;/p&gt;</description></item><item><title>Sending Email with Zend Framework 2 Using Template</title><link>https://www.infinitescript.com/2014/10/zend-framework-2-send-html-mail-with-simple-template/</link><pubDate>Tue, 07 Oct 2014 08:12:31 +0000</pubDate><guid>https://www.infinitescript.com/2014/10/zend-framework-2-send-html-mail-with-simple-template/</guid><description>&lt;p&gt;Sending a templated HTML email is a one-liner in some frameworks, but Zend Framework 2 ships no such helper, so you have to wire up the view renderer, the MIME message, and the transport yourself. This post walks through that setup.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Zend Framework 2 has reached end of life. In 2019 the project moved to the Linux Foundation and was renamed &lt;a href="https://getlaminas.org/"&gt;Laminas&lt;/a&gt;; the &lt;code&gt;Zend\*&lt;/code&gt; classes shown below now live under &lt;code&gt;Laminas\*&lt;/code&gt; (e.g. &lt;code&gt;Laminas\Mail&lt;/code&gt;, &lt;code&gt;Laminas\View&lt;/code&gt;). The technique is unchanged, so this post still applies once you swap the namespaces.&lt;/p&gt;</description></item><item><title>WordPress $ is not defined</title><link>https://www.infinitescript.com/2014/08/wordpress-is-not-defined-even-if-jquery-is-loaded/</link><pubDate>Thu, 21 Aug 2014 04:29:54 +0000</pubDate><guid>https://www.infinitescript.com/2014/08/wordpress-is-not-defined-even-if-jquery-is-loaded/</guid><description>&lt;p&gt;If you copy a normal jQuery snippet into a WordPress theme or plugin, sooner or later you hit &lt;code&gt;Uncaught ReferenceError: $ is not defined&lt;/code&gt;. The confusing part is that jQuery itself &lt;em&gt;is&lt;/em&gt; loaded; your other jQuery code may even be working. So why does &lt;code&gt;$&lt;/code&gt; blow up?&lt;/p&gt;&#10;&lt;h2 id="why-it-happens"&gt;Why It Happens&lt;/h2&gt;&#10;&lt;p&gt;WordPress ships its own copy of jQuery and loads it in &lt;strong&gt;no-conflict mode&lt;/strong&gt;. On startup it effectively runs:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nx"&gt;jQuery&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;noConflict&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;noConflict()&lt;/code&gt; tells jQuery to give back control of the global &lt;code&gt;$&lt;/code&gt;. After it runs, &lt;code&gt;jQuery&lt;/code&gt; still points to the library, but &lt;code&gt;$&lt;/code&gt; no longer does; it is left free for some other library to claim.&lt;/p&gt;</description></item><item><title>Zend Framework 2: Get Parameters</title><link>https://www.infinitescript.com/2014/02/zend-framework-2-get-parameters/</link><pubDate>Mon, 10 Feb 2014 03:49:35 +0000</pubDate><guid>https://www.infinitescript.com/2014/02/zend-framework-2-get-parameters/</guid><description>&lt;p&gt;The easiest way to read request parameters in a Zend Framework 2 controller is the &lt;a href="https://github.com/laminas/laminas-mvc/blob/master/src/Controller/Plugin/Params.php"&gt;Params plugin&lt;/a&gt;, introduced in beta5. It has utility methods to make it easy to access different types of parameters. As always, reading &lt;a href="https://github.com/laminas/laminas-mvc/blob/master/test/Controller/Plugin/ParamsTest.php"&gt;the tests&lt;/a&gt; can prove valuable to understand how something is supposed to be used.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Zend Framework 2 has been deprecated. The project moved to the Linux Foundation in 2019 and lives on as &lt;a href="https://getlaminas.org/"&gt;Laminas&lt;/a&gt;; the &lt;code&gt;Zend\&lt;/code&gt; namespace became &lt;code&gt;Laminas\&lt;/code&gt;, so the plugin shown here is now &lt;code&gt;Laminas\Mvc\Controller\Plugin\Params&lt;/code&gt; (in the &lt;code&gt;laminas/laminas-mvc&lt;/code&gt; package). The API is unchanged, so the examples below still apply after that rename.&lt;/p&gt;</description></item><item><title>Zend Framework 2: Redirect to 404 page in Controller</title><link>https://www.infinitescript.com/2014/02/zend-framework-2-redirect-to-404-page-in-controller/</link><pubDate>Fri, 07 Feb 2014 10:15:43 +0000</pubDate><guid>https://www.infinitescript.com/2014/02/zend-framework-2-redirect-to-404-page-in-controller/</guid><description>&lt;p&gt;I&amp;rsquo;ve been getting into trouble for several hours with redirecting to the 404 page in Zend Framework 2.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Zend Framework 2 has been deprecated. Zend Framework was migrated to the &lt;a href="https://getlaminas.org/"&gt;Laminas Project&lt;/a&gt; in 2020, where development continues today. The &lt;code&gt;notFoundAction()&lt;/code&gt; technique below still applies in laminas-mvc.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;I asked about this on &lt;a href="https://stackoverflow.com/questions/21622849/use-the-same-error-handler-in-different-modules-in-zend-framework-2"&gt;Stack Overflow&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="what-didnt-work"&gt;What Didn&amp;rsquo;t Work&lt;/h2&gt;&#10;&lt;p&gt;Before that, I was using the following code:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-php" data-lang="php"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;$this&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;getResponse&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="na"&gt;setStatusCode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This sets the HTTP status code to 404, which looks fine at first. But it only changes the response header; it doesn&amp;rsquo;t dispatch the error controller, so once I built a custom 404 page I found that it never rendered.&lt;/p&gt;</description></item><item><title>Install PHP and PHPUnit on Windows/Ubuntu</title><link>https://www.infinitescript.com/2013/08/install-php-and-phpunit-on-windows-ubuntu/</link><pubDate>Sun, 18 Aug 2013 12:20:05 +0000</pubDate><guid>https://www.infinitescript.com/2013/08/install-php-and-phpunit-on-windows-ubuntu/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This post has been &lt;strong&gt;updated for PHP 8.5 and PHPUnit 13&lt;/strong&gt;. The original 2013 version installed PHPUnit through PEAR (&lt;code&gt;go-pear&lt;/code&gt;, &lt;code&gt;pear channel-discover pear.phpunit.de&lt;/code&gt;), but PEAR has since been retired and PHPUnit no longer ships through it. The current approach is to install PHPUnit with &lt;a href="https://getcomposer.org/"&gt;Composer&lt;/a&gt; or as a standalone PHAR, both shown below.&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;PHPUnit is the de-facto testing framework for PHP. This guide gets PHP and PHPUnit running on Windows and Ubuntu, then writes and runs a first test to confirm the setup works.&lt;/p&gt;</description></item><item><title>Convert Excel Date into Timestamp in PHP</title><link>https://www.infinitescript.com/2013/04/convert-excel-date-into-timestamp/</link><pubDate>Fri, 05 Apr 2013 08:05:30 +0000</pubDate><guid>https://www.infinitescript.com/2013/04/convert-excel-date-into-timestamp/</guid><description>&lt;p&gt;Excel stores a date internally as a number of days since January 1, 1900.&lt;br&gt;&#10;For example: &amp;ldquo;June 9th, 2011 10:30 AM&amp;rdquo; would be stored as &amp;ldquo;40703.4375&amp;rdquo;.&lt;br&gt;&#10;40703 is the number of full days since 01/01/1900 and 0.4375 represents the time (10.5/24 = 0.4375).&lt;/p&gt;&#10;&lt;p&gt;When you process dates read from an Excel spreadsheet (&lt;em&gt;e.g.&lt;/em&gt;, using &lt;a href="https://github.com/phpoffice/phpexcel"&gt;PHPExcel&lt;/a&gt;) you often want to convert them into a UNIX timestamp, &lt;em&gt;i.e.&lt;/em&gt; a number of seconds elapsed since midnight of January 1, 1970 UTC.&lt;/p&gt;</description></item><item><title>Student Management System</title><link>https://www.infinitescript.com/project/student-management-system/</link><pubDate>Mon, 01 Apr 2013 11:21:00 +0000</pubDate><guid>https://www.infinitescript.com/project/student-management-system/</guid><description>&lt;h2 id="introduction"&gt;Introduction&lt;/h2&gt;&#10;&lt;p&gt;The Student Management System is a PHP/CodeIgniter web application built for the &lt;a href="http://rjxy.hfut.edu.cn"&gt;School of Software at Hefei University of Technology&lt;/a&gt; to replace a fully paper-based &lt;strong&gt;Comprehensive Evaluation&lt;/strong&gt; (综合测评): an annual multi-dimensional student assessment covering academic performance, peer review, extracurricular involvement, and community service, used to determine scholarship rankings.&#10;&lt;a href="https://rjxy.hfut.edu.cn/info/1016/1968.htm"&gt;According to school news coverage&lt;/a&gt;, what previously took over 5 days of manual tallying per cohort was reduced to microsecond-level computation.&#10;The project was selected as a &lt;strong&gt;&lt;a href="https://rjxy.hfut.edu.cn/info/1016/2274.htm"&gt;National Undergraduate Innovation Training Program&lt;/a&gt;&lt;/strong&gt; (国家级大学生创新训练计划项目) project in 2013.&lt;/p&gt;</description></item><item><title>Use CodeIgniter Resources within Library</title><link>https://www.infinitescript.com/2013/03/utilizing-codeigniter-resources-within-your-library/</link><pubDate>Sat, 02 Mar 2013 12:20:46 +0000</pubDate><guid>https://www.infinitescript.com/2013/03/utilizing-codeigniter-resources-within-your-library/</guid><description>&lt;p&gt;To access CodeIgniter&amp;rsquo;s native resources from inside your own library, use the &lt;code&gt;get_instance()&lt;/code&gt; function. It returns the CodeIgniter super object, the same one you reach through &lt;code&gt;$this&lt;/code&gt; inside a controller, so your library can load helpers, read config, or call any other class the framework has instantiated.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;code&gt;get_instance()&lt;/code&gt; is a CodeIgniter &lt;strong&gt;3.x&lt;/strong&gt; (and earlier) technique. CodeIgniter 4 dropped the global super object. There you reach framework features through &lt;a href="https://codeigniter.com/user_guide/concepts/services.html"&gt;Services&lt;/a&gt;, such as &lt;code&gt;service('session')&lt;/code&gt; or &lt;code&gt;\Config\Services::session()&lt;/code&gt;, or by injecting the dependencies your class needs through its constructor. Everything below applies to CodeIgniter 3.x.&lt;/p&gt;</description></item><item><title>Generate a Random File Name when Uploading Files in WordPress</title><link>https://www.infinitescript.com/2013/02/rename-files-during-upload-within-wordpress-backend/</link><pubDate>Mon, 18 Feb 2013 10:00:37 +0000</pubDate><guid>https://www.infinitescript.com/2013/02/rename-files-during-upload-within-wordpress-backend/</guid><description>&lt;p&gt;The passage is telling you how to rename the file name automatically by WordPress (without using any plugins).&lt;/p&gt;&#10;&lt;h2 id="a-word-of-warning"&gt;A Word of Warning&lt;/h2&gt;&#10;&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;: To apply this hack, you&amp;rsquo;ll have to edit one of WordPress&amp;rsquo;s core files. Keep in mind that it is never recommended. This hack should be redone if you upgrade WordPress.&lt;/p&gt;&#10;&lt;h2 id="editing-the-upload-handler"&gt;Editing the Upload Handler&lt;/h2&gt;&#10;&lt;p&gt;Open the wp-admin/includes/files.php file, and go to line 324 (approximately here). You&amp;rsquo;ll see the following:&lt;/p&gt;</description></item></channel></rss>