Hi Andi,

Turns out the problem is that Apache is building their binaries using
VC6 so wrong CRT gets loaded. The only solution I found was to tell
Windows to load Apache with msvcr80.dll instead of msvcr.dll by suppling
a manifest file in Apache bin directory. If you crate
Apache.exe.manifest that contains:

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.CRT'
version='8.0.50608.0' processorArchitecture='x86'
publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>

The Apache will load PHP and PHP will be able to load extensions. It
probably isn't good idea to force a different C Runtime on Apache like this.

Regarding performance, I found that on Zend/bench.php the improvement
was only marginal (2%) compared to huge increase (25-30%) when disabling
thread support.

http://edin.dk/archives/25-Benchmarks.html


Edin



Andi Gutmans wrote:
> Hi Edin,
> 
> Thanks for trying to get this to work!
> 
> I think eventually it'll be the right move to go to VC8 but I agree that if
> it risks a successful 5.2.1 release then it might not be worth doing that
> right now. If you can share with us a reproducing case we can try and look
> into it and see if we can get it to work. So far we have concentrated on
> CLI/CGI/FastCGi because that's the most feasible way of running, but I agree
> that you also need to get the other methods to run.
> 
> For those who are curious, there are some significant performance
> improvements in VC8. Our tolower() optimization which is significant is only
> for VC8, the compiler creates significantly faster code (on par with Intel
> C/C++ compiler), and I believe some of the CRT functions like time() are
> also much faster. So I think it's definitely worth upgrading but it should
> be well timed.
> 
> Anyway, let us know and we'll try and dig deeper and help get this puppy
> ported and update the build. There probably is some work that needs to be
> done on the 3rd party libs.
> 
> Thanks.
> 
> Andi 
> 
>> -----Original Message-----
>> From: Edin Kadribasic [mailto:[EMAIL PROTECTED] 
>> Sent: Friday, January 05, 2007 7:48 PM
>> To: PHP Internals List
>> Subject: [PHP-DEV] Windows build
>>
>> Hey,
>>
>> It seems that VC++ 8.0 (Visual Studio 2005) brings more 
>> trouble that its worth. Mainly the way it deals with the C 
>> runtime. After spending hours and hours of trying to figure 
>> out the way to make PHP work under Apache on Windows and be 
>> able to load extensions, I'm throwing in the towel.
>>
>> I can get PHP to work fine on the command line, both cgi and 
>> cli. It also works fine under IIS using fastcgi. But loading 
>> sapi dll into a webserver (not using php.exe or php-cgi.exe) 
>> works for the sapi itself, but trying to load any extensions 
>> via php.ini fails miserably. Sometimes you will get an error 
>> that the C runtime was attempted to be loaded in an illegal 
>> way, sometime PHP will claim that the extension does not exist, etc.
>>
>> I looked around at other projects and everyone seems to be 
>> using VC++ 6.0 for their builds (Active state, apache, ...) 
>> which eliminates all the hassle with bundling C runtime, etc.
>>
>> So I think the best thing for us would be to stick to the 
>> good old C compiler for making the Windows distro.
>>
>> Edin
>>
>> --
>> PHP Internals - PHP Runtime Development Mailing List To 
>> unsubscribe, visit: http://www.php.net/unsub.php
>>
> 

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to