Я пытаюсь запустить memcache, fast-cgi с apache 2.2 + php на машине с Windows 7. Если я не использую memcache, все работает нормально.
В тот момент, когда я отключаю extension=php_memcache.dll
в php.ini все возвращается в норму.
Как только я запускаю apache, журналы apache говорят:
[Wed Jan 12 18:19:23 2011] [notice] Apache/2.2.17 (Win32) mod_fcgid/2.3.6 configured -- resuming normal operations
[Wed Jan 12 18:19:23 2011] [notice] Server built: Oct 18 2010 01:58:12
[Wed Jan 12 18:19:23 2011] [notice] Parent: Created child process 412
[Wed Jan 12 18:19:23 2011] [notice] Child 412: Child process is running
[Wed Jan 12 18:19:23 2011] [notice] Child 412: Acquired the start mutex.
[Wed Jan 12 18:19:23 2011] [notice] Child 412: Starting 64 worker threads.
[Wed Jan 12 18:19:23 2011] [notice] Child 412: Starting thread to listen on port 80.
и после доступа к странице (страница только что echo phpinfo()
) Я получаю эту ошибку в error.log:
[Wed Jan 12 18:20:54 2011] [warn] [client 127.0.0.1] (OS 109)The pipe has been ended. : mod_fcgid: get overlap result error
[Wed Jan 12 18:20:54 2011] [error] [client 127.0.0.1] Premature end of script headers: index.php
У меня есть php_memcache.dll в моем каталоге ext, а httpd.conf выглядит так:
LoadModule fcgid_module modules/mod_fcgid.so
FcgidInitialEnv PHPRC "c:/php"
FcgidInitialEnv PATH "c:/php;C:/WINDOWS/system32;C:/WINDOWS;C:/WINDOWS/System32/Wbem;"
FcgidInitialEnv SystemRoot "C:/Windows"
FcgidInitialEnv SystemDrive "C:"
FcgidInitialEnv TEMP "C:/WINDOWS/Temp"
FcgidInitialEnv TMP "C:/WINDOWS/Temp"
FcgidInitialEnv windir "C:/WINDOWS"
FcgidIOTimeout 64
FcgidConnectTimeout 32
FcgidMaxRequestsPerProcess 500
<Files ~ "\.php$>"
AddHandler fcgid-script .php
FcgidWrapper "c:/php/php-cgi.exe" .php
</Files>
Таким образом, проблема должна быть связана с memcache, потому что, если я отключу его, fast-cgi, похоже, будет работать нормально. Есть ли для этого возможные причины ??
Сервис memcache запущен ... Я могу проверить это через панель управления-> сервисы.
У меня все заработало. Проблема была с версией dll и версией php. Я обновил php до 5.3, и теперь все в порядке.
Вы также должны быть осторожны с потоковой и небезопасной версией ... любая несовместимость не позволит вам запустить memcache.
Запустите PHP вручную (найдите php.exe и дважды щелкните по нему). Часто случается, что PHP не может загрузить расширение по какой-либо причине и пытается вывести всплывающее окно с сообщением об этом. Поскольку никто не видит окно сообщения, когда оно работает как служба, никто не знает, что происходит.