Re: wierd behavior on parsing css with no php included

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ralph Deffke wrote:
Hi folks, i did post this also on the Wamp page but maybe someone out there
had to solve that problem as well.

systems involved

Firefox 3.0.13
Firefox 3.5.2
IE 6

Wamp:
apache 2.2.11
PHP 5.2.9 & php 5.3

I do parse css files through php


If you state that they have not PHP to parse, then why parse them?  It is a waist!

Problem: css files are loaded into the browsers but not interpreted or used
on RAW HTML files no php included. The html files are produced with
phpDocumentor 1.4.2. IE6 uses parts of the css files loaded to display the
page, Firefox NOT AT ALL.

I think it might be possible that wamp throughs some wierd characters into
the css files or is the header type a problem? It looks like parsing the css
through the php engine changes the header of the css to text/html. this
would explain why IE6 can use them. on the other hand firebug shows the
loaded css, indicates however that no css is available.

as an reverse check I did load the html files direktly from the disk with
file:/// ... and the css are interpreted perfectly. so the source of the
problem is wamp.

it seems that the @importcsss does the biggest problem.it creates a 404
error "file not found"

it seems creating dynamic css files got some secrets involved with the wamp.
I'm using this concept since ages on linux with no problem.

on the @includecss it seems that the search for files are changing to the
php include path or something.

any idear what to check?

is important for my work to create css dynamicly


My suggestion would be to have php run a script using the auto_prepend_file ini option

; Automatically add files before or after any PHP document.
auto_prepend_file = fix_headers.php
auto_append_file =

Then, in a script called fix_headers.php, somewhere in your path I hope, you have this.

<?php

# The following regex is completely untested.  It is meant to
$ext = strtolower(preg_replace('|^.*\.([^.]+)$|', $_SERVER['SCRIPT_NAME']));

if ( 'css' === $ext ) {
	header('Content-Type: text/css');
}

?>

Another way to get around it is to have apache instruct PHP to change, and output, the correct content type.

http://httpd.apache.org/docs/1.3/mod/core.html#files
http://us2.php.net/manual/en/ini.core.php#ini.sect.data-handling
http://us2.php.net/manual/en/ini.core.php#ini.default-mimetype

<Files ~ "\.css$">
	php_value default_mimetype "text/css"
</Files>

Hope this helps

Jim Lucas

ralph_deffke@xxxxxxxx





--
Jim Lucas

   "Some men are born to greatness, some achieve greatness,
       and some have greatness thrust upon them."

Twelfth Night, Act II, Scene V
    by William Shakespeare

--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux