# Zoneminder install failed



## UTp74moh (Dec 11, 2017)

I had FAMP installed before I started install Zoneminder so it might ruined my install. I removed Apache before started Zoneminder install.


```
% sudo service zoneminder stop
DBI connect('database=zm;host=localhost','zmuser',...) failed: Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) at /usr/local/lib/perl5/site_perl/ZoneMinder/Config.pm line 106.
Can't connect to db at /usr/local/lib/perl5/site_perl/ZoneMinder/Config.pm line 129.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/ZoneMinder/Config.pm line 129.
Compilation failed in require at /usr/local/lib/perl5/site_perl/ZoneMinder.pm line 33.
BEGIN failed--compilation aborted at /usr/local/lib/perl5/site_perl/ZoneMinder.pm line 33.
Compilation failed in require at /usr/local/bin/zmpkg.pl line 48.
BEGIN failed--compilation aborted at /usr/local/bin/zmpkg.pl line 48.
```

Do you know what has gone wrong? 


```
1.4 PHP is installed as a dependency to ZoneMinder. However, you should
   tweak some of it's settings.
   Edit /usr/local/etc/php-fpm.conf and set

       listen = /var/run/php-fpm.sock
       listen.owner = www
       listen.group = www
       env[PATH] = /usr/local/bin:/usr/bin:/bin
```

Those already are there, should I take ; away front off line?

Maybe I should remove everything and start install it again.


----------



## Phishfry (Dec 12, 2017)

Here is the port maintainers readme:
https://svnweb.freebsd.org/ports/he...es/README.FreeBSD?revision=417398&view=markup

I had to add some additional settings:
https://forums.freebsd.org/threads/61879/#post-359433

Here is a pdf from the Zoneminder forum:
https://drive.google.com/file/d/0B6clHa5IX562UW5ja3NTbnhvcjQ/view?usp=sharing


----------



## SirDice (Dec 12, 2017)

UTp74moh said:


> ```
> DBI connect('database=zm;host=localhost','zmuser',...) failed: [b]Can't connect to local MySQL server[/b] through socket '/tmp/mysql.sock' (2) at /usr/local/lib/perl5/site_perl/ZoneMinder/Config.pm line 106.
> ```


Looks like you forgot to configure the DB settings.


----------



## UTp74moh (Dec 12, 2017)

I removed everything and started from scratch. Now ZM works, but I had to make little change to those instructions.

When copy/paste text to nginx.conf from that pdf, lines where at wrong order. I had to fix that file.

8.3 Configure fcgiwrap

`% sudo service fcgiwrap restart
fcgiwrap not running? (check /var/run/fcgiwrap/fcgiwrap.pid).
Starting fcgiwrap.
chmod: /var/run/fcgiwrap/fcgiwrap.sock: No such file or directory
chown: /var/run/fcgiwrap/fcgiwrap.sock: No such file or directory
chgrp: /var/run/fcgiwrap/fcgiwrap.sock: No such file or directory`

I gave command:

`% sudo sysrc fcgiwrap_socket_owner="www"
fcgiwrap_socket_owner:  -> www`

.. before `service fcgiwrap restart`.


----------



## UTp74moh (Dec 12, 2017)

Howto use https?


----------



## SirDice (Dec 12, 2017)

Try reading the documentation: http://nginx.org/en/docs/http/configuring_https_servers.html


----------



## s5e (Dec 15, 2017)

Is there something wrong with my perl5? ONVIF camera detect gives this error:


```
Unable to probe network cameras, status is '255'. Output was:

No results from GetCapabilities: SOAP-ENV:ServerError deserializing message:
unbound prefix at line 2, column 2969, byte 3008 at /usr/local/lib/perl5/site_perl/SOAP/WSDL/Expat/Base.pm line 79.
at line 2 at /usr/local/lib/perl5/site_perl/SOAP/WSDL/Expat/Base.pm line 82.
.
Message was:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c14n="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsa5="http://www.w3.org/2005/08/addressing" xmlns:xmime="http://tempuri.org/xmime.xsd" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:wsbf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:wsr="http://docs.oasis-open.org/wsrf/r-2" xmlns:dndl="http://www.onvif.org/ver10/network/wsdl/DiscoveryLookupBinding" xmlns:dnrd="http://www.onvif.org/ver10/network/wsdl/RemoteDiscoveryBinding" xmlns:dn="http://www.onvif.org/ver10/network/wsdl" xmlns:tad="http://www.onvif.org/ver10/analyticsdevice/wsdl" xmlns:tanae="http://www.onvif.org/ver20/analytics/wsdl/AnalyticsEngineBinding" xmlns:tanre="http://www.onvif.org/ver20/analytics/wsdl/RuleEngineBinding" xmlns:tan="http://www.onvif.org/ver20/analytics/wsdl" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tetcp="http://www.onvif.org/ver10/events/wsdl/CreatePullPointBinding" xmlns:tete="http://www.onvif.org/ver10/events/wsdl/EventBinding" xmlns:tetnc="http://www.onvif.org/ver10/events/wsdl/NotificationConsumerBinding" xmlns:tetnp="http://www.onvif.org/ver10/events/wsdl/NotificationProducerBinding" xmlns:tetpp="http://www.onvif.org/ver10/events/wsdl/PullPointBinding" xmlns:tetpps="http://www.onvif.org/ver10/events/wsdl/PullPointSubscriptionBinding" xmlns:tev="http://www.onvif.org/ver10/events/wsdl" xmlns:tetps="http://www.onvif.org/ver10/events/wsdl/PausableSubscriptionManagerBinding" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:tetsm="http://www.onvif.org/ver10/events/wsdl/SubscriptionManagerBinding" xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" xmlns:timg10="http://www.onvif.org/ver10/imaging/wsdl" xmlns:tls="http://www.onvif.org/ver10/display/wsdl" xmlns:tmd="http://www.onvif.org/ver10/deviceIO/wsdl" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:trc="http://www.onvif.org/ver10/recording/wsdl" xmlns:trp="http://www.onvif.org/ver10/replay/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:trv="http://www.onvif.org/ver10/receiver/wsdl" xmlns:tse="http://www.onvif.org/ver10/search/wsdl" xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tnsn="http://www.eventextension.com/2011/event/topics" xmlns:tnsavg="http://www.avigilon.com/onvif/ver10/topics" ><SOAP-ENV:Body><env:Fault><env:Code><env:Value>env:Sender</env:Value><env:Subcode><env:Value>ter:NotAuthorized</env:Value></env:Subcode></env:Code><env:Reason><env:Text xml:lang="en">Server authentication failed</env:Text></env:Reason><env:Detail><env:Text>Please provide valid user and password</env:Text></env:Detail></env:Fault></SOAP-ENV:Body></SOAP-ENV:Envelope>
urn:localhost

Please the following command from a command line for more information:

/usr/local/bin/zmonvif-probe.pl profiles
```


----------



## SirDice (Dec 15, 2017)

Have you tried following the instructions?

```
Please the following command from a command line for more information:

/usr/local/bin/zmonvif-probe.pl profiles
```


----------



## s5e (Dec 15, 2017)

SirDice said:


> Have you tried following the instructions?
> 
> ```
> Please the following command from a command line for more information:
> ...




```
% /usr/local/bin/zmonvif-probe.pl profiles
Use of uninitialized value $scheme in substitution (s///) at /usr/local/lib/perl5/site_perl/SOAP/WSDL/Factory/Transport.pm line 37.
Use of uninitialized value $scheme in hash element at /usr/local/lib/perl5/site_perl/SOAP/WSDL/Factory/Transport.pm line 40.
Use of uninitialized value $scheme in exists at /usr/local/lib/perl5/site_perl/SOAP/WSDL/Factory/Transport.pm line 59.
Use of uninitialized value $scheme in exists at /usr/local/lib/perl5/site_perl/SOAP/WSDL/Factory/Transport.pm line 75.
Use of uninitialized value $scheme in concatenation (.) or string at /usr/local/lib/perl5/site_perl/SOAP/WSDL/Factory/Transport.pm line 83.
no transport class found for scheme <> at /usr/local/lib/perl5/site_perl/SOAP/WSDL/Factory/Transport.pm line 83.
```


----------



## s5e (Dec 15, 2017)

`% cat /usr/local/lib/perl5/site_perl/SOAP/WSDL/Factory/Transport.pm`

package SOAP::WSDL::Factory::Transport;
use strict;
use warnings;
our $VERSION = 3.003;

my %registered_transport_of = ();

# Local constants
# Could be made readonly, but that's just for the paranoid...
my %SOAP_LITE_TRANSPORT_OF = (
    ftp => 'SOAP::Transport::FTP',
    http => 'SOAP::Transport::HTTP',
    https => 'SOAP::Transport::HTTP',
    mailto => 'SOAP::Transport::MAILTO',
    'local' => 'SOAP::Transport::LOCAL',
    jabber => 'SOAP::Transport::JABBER',
    mq => 'SOAP::Transport::MQ',
);

my %SOAP_WSDL_TRANSPORT_OF = (
    http => 'SOAP::WSDL::Transport::HTTP',
    https => 'SOAP::WSDL::Transport::HTTP',
);

# class methods only
sub register {
    my ($class, $scheme, $package) = @_;
    die "Cannot use reference as scheme" if ref $scheme;
    $registered_transport_of{ $scheme } = $package;
}

sub get_transport {
    my ($class, $url, %attrs) = @_;


    my $scheme = $url;
*$scheme =~s{ \:.+$ }{}xm;*


*if (defined $registered_transport_of{ $scheme }*) {
        no strict qw(refs);
        $registered_transport_of{ $scheme }->can('new') or
            eval "require $registered_transport_of{ $scheme }"
                or die "Cannot load transport class $registered_transport_of{ $scheme } : $@";

        # try "foo::Client" class first - SOAP::Tranport always requires
        # a package withoug the ::Client appended, and then
        # instantiates a ::Client object...
        # ... pretty weird ...
        # ... must be from some time when the max number of files was a
        # sparse resource ...
        # ... but we've decided to mimic SOAP::Lite...

        return $registered_transport_of{ $scheme }->new( %attrs );
    }

    # try SOAP::Lite's Transport module - just skip if not require'able
    SOAP_Lite: {
* if (exists $SOAP_LITE_TRANSPORT_OF{ $scheme }) *{
            no strict qw(refs);
            # behaves interestingly different under different versions of perl
            # maybe true even if it's not available
            my $protocol_class = $SOAP_LITE_TRANSPORT_OF{ $scheme } . '::Client';
            $protocol_class->can('new')
                or eval "require $SOAP_LITE_TRANSPORT_OF{ $scheme }"
                    or last SOAP_Lite;

            # may fail if it's not available
            my $transport = eval { $protocol_class->new( %attrs ) }
                or last SOAP_Lite;
            return $transport;
        }
    }

*if (exists $SOAP_WSDL_TRANSPORT_OF{ $scheme })* {
        no strict qw(refs);
        $SOAP_WSDL_TRANSPORT_OF{ $scheme }->can('new')
            or eval "require $SOAP_WSDL_TRANSPORT_OF{ $scheme }"
                or die "Cannot load transport class $SOAP_WSDL_TRANSPORT_OF{ $scheme } : $@";
        return $SOAP_WSDL_TRANSPORT_OF{ $scheme }->new( %attrs );
    }

*die "no transport class found for scheme <$scheme>"*;
}

1;

=pod

=head1 NAME

SOAP::WSDL::Factory::Transport - Factory for retrieving transport objects

=head1 SYNOPSIS

 # from SOAP::WSDL::Client:
 $transport = SOAP::WSDL::Factory::Transport->get_transport( $url, @opt );

 # in transport class:
 package MyWickedTransport;
 use SOAP::WSDL::Factory::Transport;

 # register class as transport module for httpr and https
 # (httpr is "reliable http", a protocol developed by IBM).
 SOAP::WSDL::Factory::Transport->register( 'httpr' , __PACKAGE__ );
 SOAP::WSDL::Factory::Transport->register( 'https' , __PACKAGE__ );

=head1 DESCRIPTION

SOAP::WSDL::Transport serves as factory for retrieving transport objects for
SOAP::WSDL.

The actual work is done by specific transport classes.

SOAP::WSDL::Transport tries to load one of the following classes:

=over

=item * the class registered for the scheme via register()

=item * the SOAP::Lite class matching the scheme

=item * the SOAP::WSDL class matching the scheme

=back

=head1 METHODS

=head2 register

 SOAP::WSDL::Transport->register('https', 'MyWickedTransport');

Globally registers a class for use as transport class.

=head2 proxy

 $trans->proxy('http://soap-wsdl.sourceforge.net');

Sets the proxy (endpoint).

Returns the transport for this protocol.

=head2 set_transport

Sets the current transport object.

=head2 get_transport

Gets the current transport object.

=head1 WRITING YOUR OWN TRANSPORT CLASS

=head2 Registering a transport class

Transport classes must be registered with SOAP::WSDL::Factory::Transport.

This is done by executing the following code where $scheme is the URL scheme
the class should be used for, and $module is the class' module name.

 SOAP::WSDL::Factory::Transport->register( $scheme, $module);

To auto-register your transport class on loading, execute register() in your
tranport class (see L<SYNOPSIS|SYNOPSIS> above).

Multiple protocols or multiple classes are registered by multiple calls to
register().

=head2 Transport plugin package layout

You may only use transport classes whose name is either
the module name or the module name with '::Client' appended.

=head2 Methods to implement

Transport classes must implement the interface required for SOAP::Lite
transport classes (see L<SOAP::Lite::Transport> for details,
L<SOAP::WSDL::Transport::HTTP|SOAP::WSDL::Transport::HTTP> for an example).

To provide this interface, transport modules must implement the following
methods:

=over

=item * new

=item * send_receive

Dispatches a request and returns the content of the response.

=item * code

Returns the status code of the last send_receive call (if any).

=item * message

Returns the status message of the last send_receive call (if any).

=item * status

Returns the status of the last send_receive call (if any).

=item * is_success

Returns true after a send_receive was successful, false if it was not.

=back

SOAP::Lite requires transport modules to pack client and server
classes in one file, and to follow this naming scheme:

 Module name:
   "SOAP::Transport::" . uc($scheme)

 Client class (additional package in module):
   "SOAP::Transport::" . uc($scheme) . "::Client"

 Server class (additional package in module):
   "SOAP::Transport::" . uc($scheme) . "::Client"

SOAP::WSDL does not require you to follow these restrictions.

There is only one restriction in SOAP::WSDL:

You may only use transport classes whose name is either the module name or
the module name with '::Client' appended.

SOAP::WSDL will try to instantiate an object of your transport class with
'::Client' appended to allow using transport classes written for SOAP::Lite.

This may lead to errors when a different module with the name of your
transport module suffixed with ::Client is also loaded.

=head1 LICENSE AND COPYRIGHT

Copyright 2004-2007 Martin Kutter. All rights reserved.

This file is part of SOAP-WSDL. You may distribute/modify it under
the same terms as perl itself

=head1 AUTHOR

Martin Kutter E<lt>martin.kutter fen-net.deE<gt>

=head1 REPOSITORY INFORMATION

 $Rev: 851 $
 $LastChangedBy: kutterma $
 $Id: Transport.pm 851 2009-05-15 22:45:18Z kutterma $
 $HeadURL: https://soap-wsdl.svn.sourceforge.n...WSDL/trunk/lib/SOAP/WSDL/Factory/Transport.pm $

=cut



Those bold lines failed..


----------



## s5e (Dec 15, 2017)

Zoneminder is too messy.. I'll try Motion instead..


----------

