Friday, December 15, 2017

Use Redirect and Proxypass under one virtualhost in apache


If you need to redirect your domain on another domain or you need to redirect http to https, you use Redirect Permanent in your virtualhost to achieve but if your application is running on different port (node, python, ruby etc) and you have resolved port using proxy pass then your redirect attribute might not be working.

To solve this issue, use redirect under proxy directive.

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://localhost:8080/
    ProxyPassReverse / http://localhost:8080/

<Proxy *>
    Redirect permanent / https://domain.co.in
</Proxy>

</VirtualHost>

Now your port will be resolved with domain as well as you can redirect domain too.

/opt/lampp/bin/httpd: relocation error: .so: symbol SSL_library_init, version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference

Xampp apache is not starting after adding stomp extension or mongo extension in php.ini file. After installation using pecl, you have added following line in php.ini file.
extension=mongo.so
extension=stomp.so

Now when you try to restart xampp, apache does not start. 

When you check the apache log, you see following error.

/opt/lampp/bin/httpd: relocation error: stomp.so: symbol SSL_library_init, version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference

/opt/lampp/bin/httpd: relocation error: mongo.so: symbol SSL_library_init, version OPENSSL_1.0.0 not defined in file libssl.so.1.0.0 with link time reference

If you remove the extension line in php.ini, apache works fine but you need to use the extension so you can not remove it, here is the solution.

Solution :

Install stomp or mongo or other extension with disable ssl support


Choose no option while installing stomp/mongo/extension-name

OpenSSL install prefix (no to disable SSL support) [/usr] : no

Now when you add extension in php.ini, the apache works fine and you are able to use the installed extension.



XAMPP is currently only available as 32 bit application. Please use a 32 bit compatibility library for your system.

Solution - I
If you have latest 64 bit Linux Operating system like recent versions of Ubuntu / Debian / CentOS or Fedora and you want to use older version of php or mysql ( php 5.3 or php 5.4) then you should follow Solution - I.

Older libraries of xampp supports 32 bit operating system so your latest 64 bit operating system is not able to install older xampp.

To make it working install Ubuntu 12.04 LTS or Debian 7.0 in Vmware or Virtualbox
or 
Download ubuntu 12.04 docker image and install xampp inside it, it is faster solution and will not occupy too much RAM.

Solution - II
If your xampp was working fine and suddenly it has started giving this error then this solution is for you

Most common reason of this error, you have added an extension in xampp and after adding it in php.ini, the lampp is not getting started. You are getting following error :

XAMPP is currently only available as 32 bit application. Please use a 32 bit compatibility library for your system.

Here is the solution for you.

Comment following code in the file /opt/lampp/lampp

#case `uname -m` in
#    *_64)
#    if $XAMPP_ROOT/bin/php -v > /dev/null 2>&1
#    then
#        :
#    else
#        $GETTEXT -s "XAMPP is currently only availably as 32 bit application. Please use a 32 bit compatibility library for your system."
#        exit 1
#    fi
#    ;;
#esac


Now restart xampp and you should not get above error.

If still there is error and it was because of new installed extension, I would suggest to comment the extension .so line in php.ini and restart xampp.

You can see the solution in the following video.