Strawberry Perl requires C:\strawberry\c\bin\ to be in $ENV{PATH} to correctly load XS modules

RESOLVED FIXED in Bugzilla 5.0

Status

()

Bugzilla
Installation & Upgrading
RESOLVED FIXED
3 years ago
a year ago

People

(Reporter: louis.puttick, Assigned: Frédéric Buclin)

Tracking

4.4.1
Bugzilla 5.0
Bug Flags:
approval5.0 +

Details

(URL)

Attachments

(1 attachment, 1 obsolete attachment)

(Reporter)

Description

3 years ago
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 (Beta/Release)
Build ID: 20131205075310

Steps to reproduce:

using BZ 4.4.1, strawberry perl 5.16.3, MySQL5.6, apache 2.2 on windows server 2003 sp1.

Checksetup.pl runs fine but on launching bugzilla web interface the following error is issued:
index.cgi: install_driver(mysql) failed: Can't load 'D:/Perl/perl/vendor/lib/auto/DBD/mysql/mysql.dll' for module DBD::mysql: load_file:The specified module could not be found at D:/Perl/perl/lib/DynaLoader.pm line 190.
index.cgi:  at (eval 108) line 3.
index.cgi: Compilation failed in require at (eval 108) line 3.
index.cgi: Perhaps a required shared library or dll isn't installed where expected
index.cgi:  at Bugzilla/DB.pm line 1265.


Actual results:

failed webpage


Expected results:

what should happen is that the cgi entry should find the path in perl to libmysql_.dll. The stop gap fix is to fix the problem with Strawberry Perl is to copy C:\strawberry\c\bin\libmysql_.dll to C:\strawberry\perl\vendor\lib\auto\DBD\mysql\libmysql_.dll.

many thanks to:
ihttp://lpsolit.wordpress.com/2010/05/15/installing-dbdmysql-what-a-pain/
Assignee: nobody → installation
Component: General → Installation & Upgrading
Product: bugzilla.mozilla.org → Bugzilla
QA Contact: default-qa
Version: Production → 4.4.1
this is an issue with how perl is deployed on your system, which is outside of bugzilla's control.
you should report this issue to the strawberry perl maintainers.
Status: UNCONFIRMED → RESOLVED
Last Resolved: 3 years ago
Resolution: --- → INVALID
(Reporter)

Comment 2

3 years ago
thanks and noted.
(Assignee)

Comment 3

2 years ago
This must be documented as this is a common issue with Strawberry Perl.
Assignee: installation → documentation
Status: RESOLVED → REOPENED
Component: Installation & Upgrading → Documentation
Ever confirmed: true
Resolution: INVALID → ---
(Assignee)

Comment 4

2 years ago
The correct command is:

copy C:\strawberry\c\bin\libmysql__.dll C:\strawberry\perl\vendor\lib\auto\DBD\mysql\libmysql__.dll

(2 consecutive underscores, not just 1)
Assignee: documentation → LpSolit
Status: REOPENED → ASSIGNED
Summary: libmysql_.dll is not found when using Strawberry Perl and MySQL → libmysql__.dll is not found when using Strawberry Perl and MySQL
(Assignee)

Comment 5

2 years ago
OK, scratch that! The bug is on our side. We delete $ENV{PATH} in Bugzilla::init_page() but then Strawberry Perl doesn't know where required DLL are located to load XS modules. This bug is not just about libmysql_.dll but about all DLL required by XS modules, such as libexpat-1__.dll which is required by XML::Parser, etc...
Assignee: LpSolit → installation
Status: ASSIGNED → NEW
Component: Documentation → Installation & Upgrading
Summary: libmysql__.dll is not found when using Strawberry Perl and MySQL → Strawberry Perl requires C:\strawberry\c\bin\ to be in $ENV{PATH} to correctly load XS modules
(Assignee)

Comment 6

2 years ago
Created attachment 8664456 [details] [diff] [review]
patch, v1

This is an ugly hack to make Bugzilla work with Strawberry Perl. I know that $ENV{PATH} must be sanitized per perlsec and bug 59349 (wow, Bugzilla 2.14!), but I have no idea how to make it better.

Asking justdave for review as he was heavily involved when taint checks have been implemented in Bugzilla.
Attachment #8664456 - Flags: review?(justdave)
(Assignee)

Updated

2 years ago
(Assignee)

Comment 7

2 years ago
justdave, could you tell me if you are fine with is fix, else please redirect it to another reviewer.
Flags: needinfo?(justdave)
(Assignee)

Comment 8

2 years ago
Created attachment 8667811 [details] [diff] [review]
patch, v2

Much better fix. Now I no longer guess the name of the directory in which Strawberry Perl is installed. perl.exe is in C:\...\perl\bin, and we need to also include C:\...\c\bin in the path. Tested on Windows 7.
Assignee: installation → LpSolit
Attachment #8664456 - Attachment is obsolete: true
Status: NEW → ASSIGNED
Attachment #8664456 - Flags: review?(justdave)
Flags: needinfo?(justdave)
Attachment #8667811 - Flags: review?(gerv)
(Assignee)

Comment 9

2 years ago
This is the last patch required to make Strawberry Perl fully work with Bugzilla.
Target Milestone: --- → Bugzilla 5.0
Comment on attachment 8667811 [details] [diff] [review]
patch, v2

Review of attachment 8667811 [details] [diff] [review]:
-----------------------------------------------------------------

r=gerv.

Gerv
Attachment #8667811 - Flags: review?(gerv) → review+
(Assignee)

Updated

2 years ago
Flags: approval5.0?

Updated

2 years ago
Flags: approval5.0? → approval5.0+
(Assignee)

Comment 11

2 years ago
To ssh://gitolite3@git.mozilla.org/bugzilla/bugzilla.git
   7321534..8fff730  master -> master

To ssh://gitolite3@git.mozilla.org/bugzilla/bugzilla.git
   a326cd5..9cd7cb7  5.0 -> 5.0
Status: ASSIGNED → RESOLVED
Last Resolved: 3 years ago2 years ago
Resolution: --- → FIXED

Comment 12

2 years ago
I have Installed Bugzilla 5.0.1 on Windows 2008 R2 ,Strawberry Perl (64-bit) 5.22.0.1 and IIS 7.5.

Attachment issue has been fixed with this patch but one more issue has been arise after updating the patch.

Steps to produce error

1. Bugzilla Email Preferences Click disable all mail.
2. Save changes.
3. Create new bug (with or without attachment)
4. Submit bug

Error in post_bug.cgi

There was an error sending mail from 'bugzilla-daemon' to 'xyz@xyz.com': no sender
Traceback:

 at Bugzilla/Mailer.pm line 117.
	Bugzilla::Mailer::MessageToMTA(...) called at Bugzilla/BugMail.pm line 381
	Bugzilla::BugMail::sendMail(...) called at Bugzilla/BugMail.pm line 280
	Bugzilla::BugMail::Send(...) called at C:\bugzilla\post_bug.cgi line 209


I have disable all email communication so it should not try to send an email.

Regards,
Sadiq
(Assignee)

Comment 13

2 years ago
(In reply to Sadiq from comment #12)
> There was an error sending mail from 'bugzilla-daemon' to 'xyz@xyz.com': no
> sender

As the error message says, 'bugzilla-daemon' is not a valid sender. It must be a valid email address. That's the reason of the error.

Comment 14

2 years ago
I have disable all email communication so it should not try to send an email.

It was working fine before this patch
I can't see how this patch could cause Bugzilla to send email in circumstances it wasn't sending it before. I would take this to the support forum; but also, try backing the patch out and seeing if that actually does cure the problem or not.

Gerv
(Assignee)

Updated

2 years ago
Duplicate of this bug: 1240367
(Assignee)

Comment 17

a year ago
I forgot to detaint $ENV{PATH} on Strawberry Perl, making graphviz unhappy.

To ssh://gitolite3@git.mozilla.org/bugzilla/bugzilla.git
   3a98ba4..a6562e0  master -> master

To ssh://gitolite3@git.mozilla.org/bugzilla/bugzilla.git
   6896e04..28ec15f  5.0 -> 5.0
(Assignee)

Updated

a year ago
Duplicate of this bug: 794196
You need to log in before you can comment on or make changes to this bug.