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