# How to create your first PHP program

> Write your first PHP program, a Hello World that uses echo inside php tags, and understand how Apache runs it server-side before sending HTML to the browser.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2022-08-03 | Topics: [PHP](https://flaviocopes.com/tags/php/) | Canonical: https://flaviocopes.com/php-first-program/

When learning a new programming language we have this tradition of creating a “Hello, World!” application. Something that prints those strings.

Make sure MAMP is running, and open the `htdocs` folder as explained above.

Open the `index.php` file in a code editor.

I recommend using [VS Code](https://code.visualstudio.com), it’s a very simple code editor. See [https://flaviocopes.com/vscode/](https://flaviocopes.com/vscode/) for an introduction.

![VS Code editor showing the default MAMP index.php file with PHP language detection code](https://flaviocopes.com/images/php-first-program/Screen_Shot_2022-06-24_at_15.37.36.jpg)

This is the code that generates the “Welcome to MAMP” page you saw in the browser.

Delete everything and replace that with:

```php
<?php
echo 'Hello World';
?>
```

Save, refresh the page on [http://localhost:8888](http://localhost:8888), you should see this:

![Browser window showing Hello World text displayed at localhost:8888 after running the PHP code](https://flaviocopes.com/images/php-first-program/Screen_Shot_2022-06-24_at_15.39.00.jpg)

Great!

That was your first PHP program.

Let’s explain what is happening here.

We have the Apache HTTP server listening on port `8888` on localhost, your computer.

When we access [http://localhost:8888](http://localhost:8888) with the browser we’re making an HTTP request, asking for the content of the route `/`, the base URL.

Apache by default is configured to serve that route serving the `index.html` file included in the `htdocs` folder. That file does not exist, but as we have configured Apache to work with PHP, it will then search for an `index.php` file.

That file exists, and PHP code is executed server-side before Apache sends the page back to the browser.

In the PHP file, we have a `<?php` opening, which says “here starts some PHP code”.

We have an ending `?>` that closes the PHP code snippet, and inside it, we use the `echo` instruction to print the string enclosed into quotes into the HTML.

A semicolon is required at the end of every statement.

We have this opening/closing structure because we can embed PHP inside HTML. PHP is a scripting language, whose goal is to be able to “decorate” an HTML page with dynamic data.

> Note that with modern PHP, we generally avoid mixing PHP into the HTML, and instead PHP is used as a “framework to generate the HTML”, for example using tools like Laravel. But we discuss _plain PHP_ in this book, so it makes sense to start from the basics.

For example, something like this will give you the same result in the browser:

```php
Hello
<?php
echo 'World';
?>
```

To the final user, that looks at the browser and has no idea of the code behind the scenes, there’s no difference at all.

> The page is technically an HTML page, even though it does not contain HTML tags but just a `Hello World` string, but the browser can figure out how to display that in the window.
