Author: Shivam Mathur (shivammathur) Committer: GitHub (web-flow) Pusher: shivammathur Date: 2026-03-03T20:29:33+05:30
Commit: https://github.com/php/web-php/commit/805a63d0f1968cfacf442467ae261be819cf94b0 Raw diff: https://github.com/php/web-php/commit/805a63d0f1968cfacf442467ae261be819cf94b0.diff Update documentation in build-setup.php (#1849) Changed paths: M build-setup.php M styles/code-syntax.css Diff: diff --git a/build-setup.php b/build-setup.php index 0ab2f84cab..81fb745dcb 100644 --- a/build-setup.php +++ b/build-setup.php @@ -6,14 +6,22 @@ <div class="panel"> <div class="body"> <p> - This page is intended to help setup a development environment for PHP, if mistakes are found + This page is intended to help set up a development environment for PHP, if mistakes are found please <a href="https://bugs.php.net">report</a> them. </p> </div> </div> '; -site_header("Operating System Preparation", ["current" => "community"]); +site_header( + "Operating System Preparation", + [ + "current" => "community", + "css" => [ + "code-syntax.css", + ], + ], +); ?> <h2 id="os-prep" class="content-header">Operating System Preparation</h2> @@ -22,28 +30,30 @@ Improving PHP requires a working build environment to test changes, the following section deals with setting up a working build environment. </p> <p> - Your build environment should have an appropriate toolchain that includes a working C compiler, - for those not working in Microsoft Windows, you will need a working, compatible autotools installation, and at the very least a shared copy of zlib. + Your build environment should have an appropriate toolchain that includes a working C compiler. + For those not working in Microsoft Windows, you will need a working, compatible autotools installation, and at the very least a shared copy of zlib. </p> <p> For most *nix like operating systems, some external dependencies may be required to bring a build to completion; - if a build fails because of missing headers or libraries, issuing a variant of the following command should resolve those dependencies, allowing the build to continue: - <ul> - <li><pre class="small">[sudo] yum|apt-get|ports install package[-dev[el]]</pre></li> - </ul> + if a build fails because of missing headers or libraries, issuing a variant of the following command should resolve those dependencies, allowing the build to continue. </p> +<div class="code-toolbar"> +<pre class="small">[sudo] yum|apt|port install package[-dev[el]]</pre> +</div> +<p> + For those working in <i>Ubuntu Linux</i>, you can run the following command to automate the installation of dependencies. +</p> +<div class="code-toolbar"> +<pre class="small">sudo apt build-dep php</pre> +</div> <p> - For those working in <i>Ubuntu Linux</i>, you can run the following command to automate the installation of dependencies: - <ul> - <li><pre class="small">sudo apt-get build-dep php5</pre></li> - </ul> - If the compilation of <i>an extension</i> should fail because of missing dependencies, <i>Ubuntu Linux</i> can attempt to automate the resolution of those dependencies by issuing: - <ul> - <li><pre class="small">sudo apt-get build-dep php5-<i>extname</i></pre></li> - </ul> + If the compilation of <i>an extension</i> fails because of missing dependencies, <i>Ubuntu Linux</i> can attempt to automate the resolution of those dependencies by issuing: </p> +<div class="code-toolbar"> +<pre class="small">sudo apt build-dep php-<extname></pre> +</div> <p> - The following table shows what is required for Microsoft Windows users to build PHP: + The following table shows what is required for Microsoft Windows users to build supported PHP versions: </p> <table> <tr> @@ -54,35 +64,44 @@ <th>PHP SDK</th> </tr> <tr> - <td align="center">5.3</td> - <td align="center">Visual Studio 2008</td> - <td align="center">6.1</td> - <td align="center"><a href="http://windows.php.net/downloads/php-sdk/deps-5.3-vc9-x86.7z">x86</a></td> - <td align="center"><a href="http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110512.zip">here</a></td> + <td align="center">8.2</td> + <td align="center">Visual Studio 2019</td> + <td align="center">VS16</td> + <td align="center"> + <a href="https://downloads.php.net/~windows/php-sdk/deps/vs16/x86/">x86</a>, + <a href="https://downloads.php.net/~windows/php-sdk/deps/vs16/x64/">x64</a> + </td> + <td align="center"><a href="https://github.com/php/php-sdk-binary-tools/releases">tools</a></td> </tr> <tr> - <td align="center">5.4</td> - <td align="center">Visual Studio 2008</td> - <td align="center">6.1</td> - <td align="center"><a href="http://windows.php.net/downloads/php-sdk/deps-5.4-vc9-x86.7z">x86</a></td> - <td align="center"><a href="http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip">here</a></td> + <td align="center">8.3</td> + <td align="center">Visual Studio 2019</td> + <td align="center">VS16</td> + <td align="center"> + <a href="https://downloads.php.net/~windows/php-sdk/deps/vs16/x86/">x86</a>, + <a href="https://downloads.php.net/~windows/php-sdk/deps/vs16/x64/">x64</a> + </td> + <td align="center"><a href="https://github.com/php/php-sdk-binary-tools/releases">tools</a></td> </tr> <tr> - <td align="center">5.5</td> - <td align="center">Visual Studio 2008</td> - <td align="center">6.1</td> - <td align="center"><a href="http://windows.php.net/downloads/php-sdk/deps-5.5-vc9-x86.7z">x86</a></td> - <td align="center"><a href="http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip">here</a></td> + <td align="center">8.4</td> + <td align="center">Visual Studio 2022</td> + <td align="center">VS17</td> + <td align="center"> + <a href="https://downloads.php.net/~windows/php-sdk/deps/vs17/x86/">x86</a>, + <a href="https://downloads.php.net/~windows/php-sdk/deps/vs17/x64/">x64</a> + </td> + <td align="center"><a href="https://github.com/php/php-sdk-binary-tools/releases">tools</a></td> </tr> <tr> - <td align="center">5.5</td> - <td align="center">Visual Studio 2012</td> - <td align="center">N/A</td> + <td align="center">8.5</td> + <td align="center">Visual Studio 2022</td> + <td align="center">VS17</td> <td align="center"> - <a href="http://windows.php.net/downloads/php-sdk/deps-5.5-vc11-x86.7z">x86</a>, - <a href="http://windows.php.net/downloads/php-sdk/deps-5.5-vc11-x64.7z">x64</a> + <a href="https://downloads.php.net/~windows/php-sdk/deps/vs17/x86/">x86</a>, + <a href="https://downloads.php.net/~windows/php-sdk/deps/vs17/x64/">x64</a> </td> - <td align="center"><a href="http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip">here</a></td> + <td align="center"><a href="https://github.com/php/php-sdk-binary-tools/releases">tools</a></td> </tr> </table> <p><b>Note:</b> If a Windows SDK is required, it is advised to install the SDK <i>before</i> Visual Studio.</p> @@ -91,34 +110,34 @@ <h2 id="workspace-prep" class="content-header">Workspace Preparation</h2> <div class="content-box"> <p> - Windows users should now download and unzip the PHP SDK to their workspace and execute the following commands in an appropriate Visual Studio Console: + Windows users should now download and unzip the PHP SDK to their workspace and execute the following commands in an appropriate Visual Studio 2019/2022 Developer Command Prompt: </p> <p> - Visual Studio 2008: - <ul> - <li><pre>setenv /xp /Release /x86</pre></li> - </ul> - Visual Studio 2008 and 2012: - <ul> - <li><pre class="small">cd C:\path-to-workspace</pre></li> - <li><pre class="small">bin\phpsdk_setvars.bat</pre></li> - <li><pre class="small">bin\phpsdk_buildtree.bat phpdev</pre></li> - </ul> - Windows should now change to the directory C:\path-to-workspace\phpdev\<i>VCXX</i>\<i>XARCH</i>, and consider it the root of the workspace for the current build. + Visual Studio 2019 and 2022: +</p> +<div class="code-toolbar"> +<pre class="small">cd C:\path-to-workspace +bin\phpsdk_setvars.bat +bin\phpsdk_buildtree.bat phpdev</pre> +</div> +<p> + Windows should now change to the directory C:\path-to-workspace\phpdev\<i>VSXX</i>\<i>XARCH</i>, and consider it the root of the workspace for the current build. </p> <p> The next step for everyone is to obtain the versioned PHP sources via git: - <ul> - <li><pre class="small">git clone -b BRANCH https://github.com/php/php-src .</pre></li> - </ul> - BRANCH should be replaced with an appropriate branch name, for example <i>PHP-5.5</i>. +</p> +<div class="code-toolbar"> +<pre class="small">git clone -b BRANCH https://github.com/php/php-src .</pre> +</div> +<p> + BRANCH should be replaced with an appropriate branch name, for example, <i>PHP-8.5</i>. </p> <p> - At this point you have a working build environment and the vanilla sources for your chosen branch of PHP, it is a good idea, before you change anything at all, to create a new branch and switch to it, in preparation for your awesome changes to come: - <ul> - <li><pre class="small">git checkout -b my-awesome-changes</pre></li> - </ul> + At this point you have a working build environment and the vanilla sources for your chosen branch of PHP, it is a good idea, before you change anything at all, to create a new branch and switch to it, in preparation for your awesome changes to come. </p> +<div class="code-toolbar"> +<pre class="small">git checkout -b my-awesome-changes</pre> +</div> </div> @@ -126,50 +145,50 @@ <div class="content-box"> <p> All operating systems now converge on (near as makes no difference) the same solutions for the rest of the build process: - <ul class="listed"> - <li><pre class="small">buildconf: generates the configure script for PHP</pre></li> - <li><pre class="small">configure: configures the build of PHP and creates Makefile</pre></li> - <li><pre class="small">make: builds PHP</pre></li> - <li><pre class="small">make test: runs testsuite</pre></li> - <li><pre class="small">make install: installs PHP</pre></li> - </ul> </p> -<p> - For Microsoft Windows operating systems, those commands looks like this: - <ul class="listed"> - <li><pre class="small">buildconf</pre></li> - <li><pre class="small">configure --with-prefix=C:\my-awesome-php</pre></li> - <li><pre class="small">nmake</pre></li> - <li><pre class="small">nmake test</pre></li> - <li><pre class="small">nmake install</pre></li> - </ul> +<ul class="listed"> + <li><code>buildconf</code>: generates the configure script for PHP</li> + <li><code>configure</code>: configures the build of PHP and creates Makefile</li> + <li><code>make</code>: builds PHP</li> + <li><code>make test</code>: runs testsuite</li> + <li><code>make install</code>: installs PHP</li> +</ul> +<p> + For Microsoft Windows operating systems, those commands look like this: </p> +<div class="code-toolbar"> +<pre class="small">buildconf +configure --with-prefix=C:\my-awesome-php +nmake +nmake test +nmake install</pre> +</div> <p> While for the rest of us, those commands look like this: - <ul class="listed"> - <li><pre class="small">./buildconf</pre></li> - <li><pre class="small">./configure --prefix=/opt/my-awesome-php</pre></li> - <li><pre class="small">make</pre></li> - <li><pre class="small">make test</pre></li> - <li><pre class="small">make install</pre></li> - </ul> </p> +<div class="code-toolbar"> +<pre class="small">./buildconf +./configure --prefix=/opt/my-awesome-php +make +make test +make install</pre> +</div> <p> - The <i>configure</i> script has the ability to customize almost every aspect of PHP, to elicit help at the console pass <i>--help</i> + The <i>configure</i> script can customize almost every aspect of PHP, to elicit help at the console pass <i>--help</i> as the only argument to <i>configure</i></p> <p> When <i>configure</i> executes, it saves the options passed in to a re-usable <i>config.nice</i> which executes <i>configure</i> when invoked. </p> <p> - Upon successful completion of a build, it is recommended to run the test suite, this will help you to identify regression problems in your work, + Upon successful completion of a build, it is recommended to run the test suite; this will help you to identify regression problems in your work, running the test suite can take a while; go out for a run, or a burger. </p> <p> It is also possible to run a set (directory) of tests in the following way: - <ul> - <li><pre class="small">[n]make test TESTS=sapi/cli</pre></li> - </ul> </p> +<div class="code-toolbar"> +<pre class="small">[n]make test TESTS=sapi/cli</pre> +</div> </div> <?php site_footer(['sidebar' => $SIDEBAR_DATA]); diff --git a/styles/code-syntax.css b/styles/code-syntax.css index 4f9e73177a..02f927911e 100644 --- a/styles/code-syntax.css +++ b/styles/code-syntax.css @@ -96,3 +96,11 @@ button.copy-to-clipboard-button:hover { .instructions .sha256 { word-break: break-all; } + +.content-box .code-toolbar { + margin: 0 0 1rem; +} + +.content-box .code-toolbar pre.small { + padding: 0.75rem; +}
