Laravel Valet+ all sites yield "undefined function apcu_fetch()" - laravel-valet

I did something stupid and while in the middle of a valet use 7.1 process, I pressed ctrl-C. In an attempt to get everything working since then I uninstalled valet+, did a composer global update, a brew update, valet fix, and valet install yet still every site I visit just spits out "Fatal error: Call to undefined function apcu_fetch() in /Users/n8klatt/.composer/vendor/weprovide/valet-plus/server.php on line 37". Any ideas on how I can get Valet+ working again?
(The initial error after interrupting the valet use 7.1 call was "Unable to determine linked PHP", which I remedied with a brew link --force php#5.6 since 5.6 was what I had been using. That allowed me to proceed with the valet use 7.1 but then all my sites started throwing that apcu_fetch error.)

So you're experiencing 2 problems here:
Call to undefined function apcu_fetch() is most likely caused by having PHP-FPM run your webserver on a different PHP version as your CLI. Makes sure your webserver is running the same version as your CLI. An easy was to check this is adding the PHPINFO within the server.php file and check the result. Often restarting your PC allows old PHP-FPM instances to die.
Unable to determine linked PHP is an error thrown when you're running on a native PHP version which is not installed by brew. In this case valet-plus cannot find the correct version number of your PHP installation and throws this error.
Solutions:
Make sure APCu is installed correctly as mentioned in weprovide/valet-plus#133
Make sure your PHP installation is not faulty as mentioned in weprovide/valet-plus#127
Hope that helps, if not give me a comment.

I had the same problem with php56. But I'm not using valet, after I reinstall the PHP56 with brew, and it added pear and pecl module. I installed apcu (couldn't install apc directly) with pecl channel-update pecl.php.net and pecl install apcu-4.0.11.
After that installation added extension="apcu.so" in php56 .ini file, which points to /usr/local/Cellar/php#5.6/5.6.38/lib/php/20131226/apcu.so where the image does not exist really because it was installed by PECL, so I had to change php56 .ini to apcu extension to match extension=/usr/local/lib/php/pecl/20131226/apcu.so where the image file resides for real, and then restart apache and it works.

Related

How can you install 3.11.x from 3.10?

I'm trying to upgrade my version of RabbitMQ using chocolatey. This package has Erlang as a dependency, so installs the relevant version required. I've gone from 3.9.19 to 3.10 fine. However, when I try and go from 3.10 to 3.11.7 I get the following error:
beam\beam_load.c(169): Error loading module elixir:
This BEAM file was compiled for a later version of the run-time system than 24.
To fix this, please recompile this module with an 24 compiler.
(Use of opcode 178; this emulator supports only up to 176.)
ERROR! Failed to start Elixir.
error: {error,
{elixir,
{bad_return,
{{elixir,start,[normal,[]]},
{'EXIT',
{undef,
[{elixir,start,[normal,[]],[]},
{application_master,start_it_old,4,
[{file,"application_master.erl"},
{line,293}]}]}}}}}}
I don't know why this is happening, or if it's even a problem. I've not been able to find anything on this error. When I run RabbitMQ it appears to be running ok with the right version of Erlang. However, this error suggests that it's attempting to use Erlang version 24 (which was already installed as part of installing 3.9.19). How is it deciding what version of Erlang to use here? I checked my environment variables and it the ERLANG_HOME is set correctly.
Update
I tried going through the process again and installing rabbitmq 3.9.19 from chocolatey, upgrading to 3.10.1, then using the choco command to uninstall just Erlang 24.0 (using force). I then upgraded rabbitmq to version 3.11.8. This got rid of the previous error but showed another one stating:
ERLANG_HOME not set correctly.
Please either set ERLANG_HOME to point to your Erlang installation or
place the RabbitMQ server distribution in the Erlang lib folder.
However, when I checked the ERLANG_HOME environment variable it seemed to be set correctly, in that it was pointing now at Erlang OTP and not erl-24.0. So why is this error thrown?

How to install mod_auth_openidc on RHEL 7

I've been to the Releases site for mod_auth_openidc and brought down the rpm. And attempting to install requires cjose but attempting to find and install that poses a problem as it seems to incorrectly test the version of jansson (e.g., 2.10 is though to be less than 2.3). Most of the documentation I find is years old. Trying to use yum brings in a very outdated version of the mod_auth_openidc (1.8.8) that fails to allow apache httpd to load if you have an OIDCDirectURL coded.
I'm trying to configure Apache HTTPD to call out to an OAUTH2 Server I've created but I can't get the old mod to work and I'd love to know where I can get the piece parts to allow the latest version to install. There are some old downloads on the Releases site if you page back to 2.0 but the libcjose0 is not an rpm.
Do I need to retrieve the dependencies from their github and build them? If someone has done this already and posted the assets I'm happy to retrieve them. I'm surprised RHEL 7 repos don't have the latest (or newer) versions of the mod_auth_openidc.
The version issue reported when trying to install cjose is a red herring. Based on this site I found I needed to install jansson-devel to get past the errant warning about versions.
Going here allowed me to retrieve a fairly recent version of cjose-0.5.1-1.el7.centos.x86_64.rpm which installed without complaints once jansson-devel was installed.
I was then able to install mod_auth_openidc-2.4.9-1.el7.x86_64.rpm from the github repo releases
I am now able to start apache httpd with the OIDCRedirectURI entry in httpd.conf

Issue when trying to run passenger on Apache

I am getting this issue when running
httpd -t
httpd: Syntax error on line 545 of /private/etc/apache2/httpd.conf: Syntax error on line 1 of /private/etc/apache2/other/passenger.conf: Cannot load /Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/b
uildout/apache2/mod_passenger.so into server: dlopen(/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so, 10): no suitable image found. Did find:\n\t/Users/sbaidon/.rv
m/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so: code signature in (/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passenger.so) not valid for use in p
rocess using Library Validation: mapped file has no cdhash, completely unsigned? Code has to be at least ad-hoc signed.\n\t/Users/sbaidon/.rvm/gems/ruby-2.2.5/gems/passenger-5.3.5/buildout/apache2/mod_passen
ger.so: stat() failed with errno=22
Passenger installation is just fine.
I ran into this too: the issue is that the built-in httpd that comes with macOS Mojave has Library Validation turned on, which means any modules it loads must be properly signed. Unfortunately, mod_passenger.so is not signed, so loading fails. Actually, a lot of people are having this problem with loading Apache modules on macOS Mojave (especially during the beta), some example references:
https://github.com/GrahamDumpleton/mod_wsgi/issues/357
https://github.com/phpredis/phpredis/issues/1406
I believe it's possible to set up a plist somewhere to give an entitlement to httpd to disable library validation (com.apple.security.cs.disable-library-validation) as described at https://developer.apple.com/documentation/security/com_apple_security_cs_disable-library-validation. For instance, here's a recent WebKit patch where they add it to allow plugin loading: https://bugs.webkit.org/show_bug.cgi?id=183252. Similarly, here's the Mozilla people talking about how they need to enable this (and other) properties: https://bugzilla.mozilla.org/show_bug.cgi?format=default&id=1470597.
Unfortunately, I don't do macOS development (I just do development on macOS) and I have absolutely no idea how to apply it to the built-in Apache, I'm sorry.
At this point I'm kind of sick of every major macOS update nerfing all my httpd settings and generally being a pain (it's infrequent but it's still annoying), so I'm doing what I should have done years ago: stop using the built-in httpd that comes with OS/X and just use Homebrew httpd.
Here's some instructions I found regarding setting up Homebrew httpd (and disabling the built-in macOS httpd), it's pretty straightforward and you don't have to follow all of the directions about multiple PHP versions etc: https://getgrav.org/blog/macos-mojave-apache-multiple-php-versions
If someone can figure out how to disable Library Validation in the built-in httpd, or if there is some way to provide signing on mod_passenger.so (seems unlikely since both the Homebrew and gem passenger need to be buildable from source), you don't need to junk the built-in httpd. But I personally think the best solution is to move away from it entirely and use the Homebrew version instead.
For anyone having this issue or any issue with library validation in macOS Mojave, I found an incredibly easy fix to disable it. https://github.com/mologie/macos-disable-library-validation
This is fixed in macOS 10.14.4

macOS Sierra 10.12.2 Apache not working

I've upgraded to the current version of macOS. I want to work with Apache. Well, my problem is, that when I try to access localhost with or without ~Username, I get an error message saying ERR_CONNECTION_REFUSED on Chrome or "Can't open Page" on Safari. Apache is running and apachectl configtest says "Syntax OK".
I placed the current version of phpMyAdmin into /Library/WebServer/Documents and tried to access it, same problem.
I followed the steps in this guide without a solution for me
Apache localhost/~username/ not working
So does anyone know what problem I'm facing? I'm clueless right now.
I had the same outcomes as above, using virtual hosts though, and after updating to macos 10.12.2 was receiving ERR_CONNECTION_REFUSED.
My original setup is based on the excellent posts here: https://getgrav.org/blog/macos-sierra-apache-mysql-vhost-apc
And as such, because I'm using Homebrew, all I needed to do was also run brew upgrade on CLI followed by sudo apachectl restart and I'm back up and running.

Ubuntu 16.04 Apache2 PHP7.0 doesn't interpret php commands

I searched the web and found that many people have issues with php7 on Ubuntu 16.04 but I have a slightly different experience.
Problem in short: I upgraded from 12.04 to (first to 14.04) 16.04 and now everything works except Apache2 with PHP7.
The problem: When I create php file like
Hello
<?
echo " World!";
?>
and access it through the browser, the browser renders the "Hello" but not the "World". So basically Apache knows that it's a php file (otherwise the file would be downloaded instead of shown) but doesnt interpret it.
Oh and it doesn't show the php code either (this is what's different in my problem compared to other asked questions).
I had PHP7 installed from a different ppa (ondrej) before but that also didn't work. I completely removed all the packages and PPAs from my sources and now I have only my Ubuntu sources left, I also completely purged all php and apache related packages, including any config under /etc/apache2 and /etc/php. This includes:
php*
php7.0*
libapache2-mod-php7.0
libapache2-mod-php
apache2*
I even removed the apt cache with apt-get clean and apt-get autoclean.
After I purged everything I reinstalled apache and php via
apt install apache2 libapache2-mod-php7.0 php7.0
I checked the mods enabled, php7.0 is enabled, restarted apache, even restarted the whole machine just to be sure but I can't get it to work.
Please don't tell me to reinstall Ubuntu because I want to understand what the problem is instead of just taking the easy way out, also everything else runs fine and I really, really don't want to reinstall all other software again since this is my development machine.
Is there any config file I have overlooked? I mean I completely purged the packages and the configs. /etc/apache2 and /etc/php were properly deleted after the purge.
Oh and also strange: Since the Update I cannot access files without the file extension. Before http://localhost/info would bring me to http://localhost/info.php automatically. Any hints?