{"id":1391,"date":"2021-04-23T07:38:58","date_gmt":"2021-04-23T07:38:58","guid":{"rendered":"https:\/\/phptutorial.net\/?page_id=1391"},"modified":"2021-04-23T07:44:43","modified_gmt":"2021-04-23T07:44:43","slug":"php-exit","status":"publish","type":"page","link":"https:\/\/www.phptutorial.net\/php-tutorial\/php-exit\/","title":{"rendered":"PHP exit"},"content":{"rendered":"\n<p><strong>Summary<\/strong>: in this tutorial, you will learn how to use the PHP exit construct to terminate a script immediately.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='introduction-to-the-php-exit-construct'>Introduction to the PHP exit construct <a href=\"#introduction-to-the-php-exit-construct\" class=\"anchor\" id=\"introduction-to-the-php-exit-construct\" title=\"Anchor for Introduction to the PHP exit construct\">#<\/a><\/h2>\n\n\n\n<p>The <code>exit<\/code> construct ouputs a message and immediately terminates the execution of the current script.<\/p>\n\n\n\n<p>Here&#8217;s the syntax of the <code>exit<\/code> construct:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-1\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">exit<\/span> ( string $status = ? ) : void<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-1\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>If you use the <code>$status<\/code> as a string, the <code>exit<\/code> will output the <code>$status<\/code> before terminating the script.<\/p>\n\n\n\n<p>However, if you use the <code>$status<\/code> as an integer:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-2\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-keyword\">exit<\/span> ( int $status ) : void<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-2\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>exit<\/code> will use the <code>$status<\/code> as the exit status and won&#8217;t output the value. The valid range for the <code>$status<\/code> is from 0 to 255. PHP reserves the status 255. And the status <code>0<\/code> indicates that the script is terminated successfully. <\/p>\n\n\n\n<p>Note that <code>exit<\/code> is not a function, but a language construct like <code><a href=\"https:\/\/phptutorial.net\/php-tutorial\/php-if-elseif\/\">if...else<\/a><\/code>, <a href=\"https:\/\/phptutorial.net\/php-tutorial\/php-foreach\/\">foreach<\/a>, etc. Therefore, you cannot call it using a variable function.<\/p>\n\n\n\n<p>The <code>exit<\/code> is functionally equivalent to <code>die<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id='php-exit-examples'>PHP exit examples <a href=\"#php-exit-examples\" class=\"anchor\" id=\"php-exit-examples\" title=\"Anchor for PHP exit examples\">#<\/a><\/h2>\n\n\n\n<p>Let&#8217;s take some examples of using the <code>exit<\/code> construct.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id='1-simple-php-exit-example'>1) Simple PHP exit example <a href=\"#1-simple-php-exit-example\" class=\"anchor\" id=\"1-simple-php-exit-example\" title=\"Anchor for 1) Simple PHP exit example\">#<\/a><\/h3>\n\n\n\n<p>The following example uses the <code>exit<\/code> to terminate the script if the file <code>readme.txt<\/code> doesn&#8217;t exist:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-3\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\r\n\r\n$filename = <span class=\"hljs-string\">'readme.txt'<\/span>;\n\r\n\r$f = fopen($filename, <span class=\"hljs-string\">'r'<\/span>);\n\r\n\r<span class=\"hljs-keyword\">if<\/span> (!$f) {\r\n\t<span class=\"hljs-keyword\">exit<\/span>(<span class=\"hljs-string\">'File '<\/span> . $filename . <span class=\"hljs-string\">'does not exist.'<\/span>);\r\n}\r\n<span class=\"hljs-comment\">\/\/ process the fie<\/span>\r\n\r<span class=\"hljs-comment\">\/\/ ...<\/span>\n<span class=\"hljs-comment\">\/\/ close the file<\/span>\r\nfclose($f);<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-3\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id='2-using-exit-in-try-catch-finally-statement-example'>2) Using exit in try&#8230;catch&#8230;finally statement example <a href=\"#2-using-exit-in-try-catch-finally-statement-example\" class=\"anchor\" id=\"2-using-exit-in-try-catch-finally-statement-example\" title=\"Anchor for 2) Using exit in try...catch...finally statement example\">#<\/a><\/h3>\n\n\n\n<p>The following example uses the <code>exit<\/code> construct in the <code><a href=\"https:\/\/phptutorial.net\/php-oop\/php-try-catch\/\">try<\/a><\/code> clause. In this case, the <code>exit<\/code> doesn&#8217;t terminate the script immediately. Instead, the <code>catch<\/code> block executes to handle the exception and then the <code><a href=\"https:\/\/phptutorial.net\/php-oop\/php-try-catch-finally\/\">finally<\/a><\/code> block executes:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-4\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\r\n\r\n<span class=\"hljs-keyword\">try<\/span> {\r\n\t<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'Execute the try block...'<\/span>, PHP_EOL;\r\n\r\n\t<span class=\"hljs-keyword\">throw<\/span> <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-keyword\">Exception<\/span>(<span class=\"hljs-string\">'An error occurs'<\/span>);\n\r\n\t<span class=\"hljs-keyword\">exit<\/span>(<span class=\"hljs-number\">1<\/span>);\r\n} <span class=\"hljs-keyword\">catch<\/span> (\\Throwable $e) {\r\n\t<span class=\"hljs-keyword\">echo<\/span> $e-&gt;getMessage() , PHP_EOL;\r\n} <span class=\"hljs-keyword\">finally<\/span> {\r\n\t<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'Execute the finally block'<\/span>;\r\n}<\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-4\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>Output:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-5\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">Execute the <span class=\"hljs-keyword\">try<\/span> block\r\nAn error occurs\r\nExecute the <span class=\"hljs-keyword\">finally<\/span> block<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-5\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id='3-using-php-exit-in-a-function-example'>3) Using PHP exit in a function example <a href=\"#3-using-php-exit-in-a-function-example\" class=\"anchor\" id=\"3-using-php-exit-in-a-function-example\" title=\"Anchor for 3) Using PHP exit in a function example\">#<\/a><\/h3>\n\n\n\n<p>The following example defines a function that has an <code>exit<\/code> construct:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-6\" data-shcb-language-name=\"PHP\" data-shcb-language-slug=\"php\"><span><code class=\"hljs language-php\"><span class=\"hljs-meta\">&lt;?php<\/span>\r\n\r\n<span class=\"hljs-function\"><span class=\"hljs-keyword\">function<\/span> <span class=\"hljs-title\">shutdown<\/span><span class=\"hljs-params\">()<\/span>\r\n<\/span>{\r\n\t<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'Shutting down...'<\/span>;\r\n\t<span class=\"hljs-keyword\">exit<\/span>;\r\n}\r\n\r\nshutdown();\r\n\r\n<span class=\"hljs-comment\">\/\/ doesn't run<\/span>\r\n<span class=\"hljs-keyword\">echo<\/span> <span class=\"hljs-string\">'After shutting down...'<\/span>;<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-6\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">PHP<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">php<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>In this example, the last statement doesn&#8217;t execute because the <code>exit<\/code> terminates the script when the <code>shutdown()<\/code> function completed.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id='4-using-php-exit-with-header-function'>4) Using PHP exit with header() function <a href=\"#4-using-php-exit-with-header-function\" class=\"anchor\" id=\"4-using-php-exit-with-header-function\" title=\"Anchor for 4) Using PHP exit with header() function\">#<\/a><\/h3>\n\n\n\n<p>The <code>header()<\/code> function sends a raw HTTP header. Typically, you use it to redirect the brower to a new URL:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-7\" data-shcb-language-name=\"JavaScript\" data-shcb-language-slug=\"javascript\"><span><code class=\"hljs language-javascript\">header(<span class=\"hljs-string\">'Location: https:\/\/ww.phptutorial.net'<\/span>);<\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-7\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">JavaScript<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">javascript<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<p>The <code>header()<\/code> function must be called before any actual output is sent. In other words, after calling the <code>header()<\/code> function, the script must not send any output. Therefore, the <code>exit<\/code> is usually used with the <code>header()<\/code> function like this:<\/p>\n\n\n<pre class=\"wp-block-code\" aria-describedby=\"shcb-language-8\" data-shcb-language-name=\"HTML, XML\" data-shcb-language-slug=\"xml\"><span><code class=\"hljs language-xml\"><span class=\"php\"><span class=\"hljs-meta\">&lt;?php<\/span>\r\nheader(<span class=\"hljs-string\">\"Location: https:\/\/phptutorial.net\/\"<\/span>);\r\n\r<span class=\"hljs-keyword\">exit<\/span>;\r\n<span class=\"hljs-meta\">?&gt;<\/span><\/span><\/code><\/span><small class=\"shcb-language\" id=\"shcb-language-8\"><span class=\"shcb-language__label\">Code language:<\/span> <span class=\"shcb-language__name\">HTML, XML<\/span> <span class=\"shcb-language__paren\">(<\/span><span class=\"shcb-language__slug\">xml<\/span><span class=\"shcb-language__paren\">)<\/span><\/small><\/pre>\n\n\n<h2 class=\"wp-block-heading\" id='summary'>Summary <a href=\"#summary\" class=\"anchor\" id=\"summary\" title=\"Anchor for Summary\">#<\/a><\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>The <code>exit<\/code> construct outputs a message and terminates the script immediately.<\/li><li>The <code>exit<\/code> won&#8217;t terminate the script immediately if it is used in a try block. The <code>catch<\/code> block will execute if an exception occurs, and the <code>finally<\/code> block will always execute.<\/li><li>Use <code>exit<\/code> with <code>header()<\/code> to prevent PHP from sending output when the header was already sent.<\/li><\/ul>\n<div class=\"helpful-block-content\" data-title=\"\">\n\t<header>\n\t\t<div class=\"wth-question\">Did you find this tutorial useful?<\/div>\n\t\t<div class=\"wth-thumbs\">\n\t\t\t<button\n\t\t\t\tdata-post=\"1391\"\n\t\t\t\tdata-post-url=\"https:\/\/www.phptutorial.net\/php-tutorial\/php-exit\/\"\n\t\t\t\tdata-post-title=\"PHP exit\"\n\t\t\t\tdata-response=\"1\"\n\t\t\t\tclass=\"wth-btn-rounded wth-yes-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\tclass=\"feather feather-thumbs-up block w-full h-full\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M14 9V5a3 3 0 0 0-3-3l-4 9v11h11.28a2 2 0 0 0 2-1.7l1.38-9a2 2 0 0 0-2-2.3zM7 22H4a2 2 0 0 1-2-2v-7a2 2 0 0 1 2-2h3\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> Yes <\/span>\n\t\t\t<\/button>\n\n\t\t\t<button\n\t\t\t\tdata-response=\"0\"\n\t\t\t\tdata-post=\"1391\"\n\t\t\t\tdata-post-url=\"https:\/\/www.phptutorial.net\/php-tutorial\/php-exit\/\"\n\t\t\t\tdata-post-title=\"PHP exit\"\n\t\t\t\tclass=\"wth-btn-rounded wth-no-btn\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\txmlns=\"http:\/\/www.w3.org\/2000\/svg\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\td=\"M10 15v4a3 3 0 0 0 3 3l4-9V2H5.72a2 2 0 0 0-2 1.7l-1.38 9a2 2 0 0 0 2 2.3zm7-13h2.67A2.31 2.31 0 0 1 22 4v7a2.31 2.31 0 0 1-2.33 2H17\"\n\t\t\t\t\t><\/path>\n\t\t\t\t<\/svg>\n\t\t\t\t<span class=\"sr-only\"> No <\/span>\n\t\t\t<\/button>\n\t\t<\/div>\n\t<\/header>\n\n\t<div class=\"wth-form hidden\">\n\t\t<div class=\"wth-form-wrapper\">\n\t\t\t<div class=\"wth-title\"><\/div>\n\t\t\t\n\t\t\t<textarea class=\"wth-message\"><\/textarea>\n\n\t\t\t<button class=\"btn btn-primary wth-btn-submit\">Send<\/button>\n\t\t\t<button class=\"btn wth-btn-cancel\">Cancel<\/button>\n\t\t\n\t\t<\/div>\n\t<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>This tutorial explains to you how the PHP exit construct works and show you some practical examples of using the exit construct.<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":15,"menu_order":141,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1391","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages\/1391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/comments?post=1391"}],"version-history":[{"count":2,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages\/1391\/revisions"}],"predecessor-version":[{"id":1394,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages\/1391\/revisions\/1394"}],"up":[{"embeddable":true,"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/pages\/15"}],"wp:attachment":[{"href":"https:\/\/www.phptutorial.net\/wp-json\/wp\/v2\/media?parent=1391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}