apache conf errordocument不适用于php中声明的404标头

I am issuing a 404 in my coupon.php page:

<?php
$id=$_GET['cid'];
$rs=mysqli_fetch_assoc(mysqli_query($scx_dbh,"select * from locations where locid=$id"));
if($rs==NULL){
  header("HTTP/1.0 404 Not Found");
}

Inside my apache config httpd.conf I have the following declared:

ErrorDocument 404 /404.html

However when i go to the page that issues the 404 it does not load the error document but just shows a browser error stating a 404. It only seems to load when a page does not exist, not when i issue a 404 in php.

Any help would be appreciated

Sending a 404 error using header("HTTP/1.0 404 Not Found"); will only tell the end browser that there was an error finding this page. It won't show your custom error page.

If you want to show the end user an error page, you will need to include or redirect to it.

Place either of the two below options under your 404 header.

Include Option

include('/path/to/404.html);

Redirect Option

header("Location: /path/to/404.html");