0

コマンドラインから実行すると正常に動作するPerlCGIスクリプトがあります./roster_return.cgi StudentID=101095が、MAMP(http://localhost:8888/cgi-bin/roster_return.cgi?StudentID=101095)で実行すると、apacheログに次のエラーが表示されます。

[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] install_driver(mysql) failed: Can't load '/Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle' for module DBD::mysql: dlopen(/Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle, 1): Library not loaded: libmysqlclient.18.dylib
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1]   Referenced from: /Library/Perl/5.10.0/darwin-thread-multi-2level/auto/DBD/mysql/mysql.bundle
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1]   Reason: image not found at /System/Library/Perl/5.10.0/darwin-thread-multi-2level/DynaLoader.pm line 207.
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1]  at (eval 11) line 3
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] Compilation failed in require at (eval 11) line 3.
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] Perhaps a required shared library or dll isn't installed where expected
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1]  at /Users/jerickson/Desktop/helpfulscripts/cgi-bin/roster_return.cgi line 16
[Wed May 02 10:56:47 2012] [error] [client 127.0.0.1] Premature end of script headers: roster_return.cgi

数年前、この行を.bash_profileに追加する必要があったことを今でも覚えています。

export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"

コマンドラインのperlスクリプトを機能させるため。これは、ライブラリが.bash_profileパスを使用していないため、ライブラリがMAMPからロードされない理由を説明します。この場所をMAMPサーバーのパスに追加するにはどうすればよいですか?

アドバイスや助けをいただければ幸いです。ありがとうございました!

4

2 に答える 2

5

VirtualHost構成でApacheのmod_envを試すことができます。

SetEnv DYLD_LIBRARY_PATH path/to/libs
于 2012-05-02T16:59:55.023 に答える
0

apachectlスクリプトに次の行を追加することもできます。

export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/path/to/libs"

通常、Apacheのbinディレクトリにあります。プロジェクトのpdo_informixをロードする必要があり、それが機能する唯一の場所です。

于 2015-03-03T06:40:01.080 に答える