Если PHP не получает заголовок соответствия If-None-Match, вы мало что можете сделать. Я не знаю, что вы подразумеваете под "PHP" не подчиняться элементам управления кэшем ""; PHP генерирует произвольную динамическую динамику, априори он не может знать, кешируется ли то, что он возвращает, клиентом или нет.
В любом случае, вам следует выяснить, действительно ли клиент отправляет заголовок. Если это так, но он не достигает PHP, проверьте, достигает ли он Apache. Если он достигает PHP, но не Apache, вы всегда можете взломать какое-нибудь решение с помощью mod-rewrite, например, добавив заголовок в виде строки запроса (не проверено!):
RewriteCond %{HTTP_IF_NONE_MATCH} (.+)
RewriteRule ^/get_image.php /get_image.php?if-none-match=%1 [B,QSA]