Opened 15 years ago

Closed 15 years ago

Last modified 15 years ago

#20527 closed defect (invalid)

php5 +apache2 not loading extensions with apache2 +workermpm

Reported by: tobias@… Owned by: ryandesign (Ryan Carsten Schmidt)
Priority: Normal Milestone:
Component: ports Version: 1.7.1
Keywords: php5, mcrypt Cc: jyrkiwahlstedt
Port: php5

Description (last modified by ryandesign (Ryan Carsten Schmidt))

Hello,

I just did a fresh install of PHP 5.3 and php5-mcrypt. However, PHP refrains from loading the extension. Here's the output of php -v:

PHP Warning:  PHP Startup: mcrypt: Unable to initialize module
Module compiled with build ID=API20090626,NTS
PHP    compiled with build ID=API20090626,TS
These options need to match
 in Unknown on line 0

Variant used for PHP5: +mysql5

If somebody can point me to the right direction, I'd greatly appreciate it!

I addition, it'd be nice if the variants found in the php5 port could be distinguished from the ones found in the php5 extension ports. For example, the php5 port includes the same mysql variants as the php5-mysql extension port. My understanding is that you can have built-in MySQL support (e.g., mysql5 variant in php5 port), or have MySQL support as an extension (mysql5 variant in php5-mysql port). Still, it's a bit confusing, but it's only my 2 cents.

Thanks, Tobias

Change History (8)

comment:1 Changed 15 years ago by blb@…

Cc: jwa@… added
Owner: changed from macports-tickets@… to ryandesign@…

comment:2 in reply to:  description Changed 15 years ago by ryandesign (Ryan Carsten Schmidt)

Description: modified (diff)

Replying to tobias@…:

I just did a fresh install of PHP 5.3 and php5-mcrypt. However, PHP refrains from loading the extension. Here's the output of php -v:

PHP Warning: PHP Startup: mcrypt: Unable to initialize module
Module compiled with build ID=API20090626,NTS
PHP compiled with build ID=API20090626,TS
These options need to match

in Unknown on line 0


Variant used for PHP5: +mysql5

If somebody can point me to the right direction, I'd greatly appreciate it!

"NTS" means "not thread safe"; "TS" means "thread safe". Did something change about your php or apache between the time that you installed php5 and the time that you installed php5-mcrypt? Maybe try rebuilding php5 (sudo port -nf upgrade php5); see if PHP is then "NTS" as well.

I addition, it'd be nice if the variants found in the php5 port could be distinguished from the ones found in the php5 extension ports. For example, the php5 port includes the same mysql variants as the php5-mysql extension port. My understanding is that you can have built-in MySQL support (e.g., mysql5 variant in php5 port), or have MySQL support as an extension (mysql5 variant in php5-mysql port). Still, it's a bit confusing, but it's only my 2 cents.

The variants are being moved from the php5 port into separate ports. There are many variants so it is taking some time to do, and as you've discovered, I am in the middle of this transition. The variants will be removed from the php5 port as soon as the separate ports are working correctly. (The php5-mysql port, for example, is not working the way I want.)

comment:3 Changed 15 years ago by tobias@…

Hi Ryan,

thanks for clarification. I'll give it another shot when I'm at home again.

Could the issue depend on the fact that I've compiled Apache 2 using the workermpm option?

comment:4 Changed 15 years ago by tobias@…

Back again.

After rebuilding PHP 5 a few times, I finally found the solution:

You must not build Apache 2 using the workermpm variant.

Here's my approach:

1) sudo port -f uninstall apache 2 (uninstall apache2+workermpm)

2) sudo port install apache2 (install Apache 2 with +workermpm disabled in /opt/local/etc/macports/variants.conf)

3) sudo port -fn upgrade php5

4) sudo port -fn upgrade php5-mcrypt

For some reason, port -fn upgrade apache2 ignored that I already unset workermpm in my variants.conf and still built apache2 with the workermpm variant, so I had to to apply the two steps described in 1) and 2).

-Tobias

comment:5 Changed 15 years ago by ryandesign (Ryan Carsten Schmidt)

Resolution: invalid
Status: newclosed
Summary: PHP 5 not loading extensions properlyphp5 +apache2 not loading extensions with apache2 +workermpm

Ok, thanks for finding that out. So it was a problem of mismatched parts, some being thread-safe and some being non-thread-safe. If you want to use Apache with the worker mpm and thus use PHP thread-safe, please ask in a PHP support venue (their mailing list, newsgroup, etc.) how to also compile the modules thread-safe. I'm going to close this as "invalid" for now but if there is something we need to change in the MacPorts PHP module ports related to making them work with thread-safe PHP, please let me know.

comment:6 Changed 15 years ago by ryandesign (Ryan Carsten Schmidt)

See also #21281. I believe I'm going to require that apache2 be compiled using its default +preforkmpm variant if you want to use the php5 apache module.

comment:7 Changed 15 years ago by tobias@…

Thanks. Right now, I'm staying with my custom PHP 5.2 port, as some apps are still not compatible with PHP 5.3. However, I'll give it a try once this is the case.

comment:8 Changed 15 years ago by blb@…

Note that there is now a php52 port if you don't want php5 (at 5.3).

Note: See TracTickets for help on using tickets.