Re: wierd behavior on parsing css with no php included
| From: | Jim Lucas | Date: | Mon, 24 Aug 2009 06:55:02 +0000 |
| Subject: | Re: wierd behavior on parsing css with no php included | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-297111@lists.php.net to get a copy of this message | ||
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 phpIf 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 dynamiclyMy 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@yahoo.de-- 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