質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

1回答

387閲覧

mampでperlのバージョンダウンをする

truemind2002

総合スコア16

Perl

Perlは多目的に使用される実用性が高い動的プログラミング言語のひとつです。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2023/12/30 14:22

編集2023/12/31 04:56

実現したいこと

mampを使用しているのですが、mampが使用するperlのバージョンダウンをしたい。

発生している問題・分からないこと

とあるcgiをmampで動かすために、環境を整えているのですが、ファイルを表示しようとしたところ、500エラーになってしまいます。

エラーメッセージ

error

1Experimental keys on scalar is now forbidden at xxxxxx

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

apaceのエラーログを見てみると、

Experimental keys on scalar is now forbidden at xxxxxx

というログがありました。

これを調べてみたところ、どうもPerlのバージョンが新しいのが原因だという記事を見つけました。
高密度商業地域

そこでperlバージョンを確認したところ、

  • 本番環境→5.16.3
  • mamp環境→5.30.3

となっていました。

ということで、mampのperlバージョンを下げればいいと思い調べてみたところ
perlbrewというのを使うとMacOSのperlのバージョンを変えられるということで、下記URLを参考にインストールしてみました。
Mac OS Xにperlbrew入れてperlの好きなバージョンを入れたり切り替えたりしてみるメモ
※シェル=zsh

perlbrewのインストールは完了し、perl-5.16.3のインストールも完了。

perlbrew switch perl-5.16.3 perl -v

とすると、

This is perl 5, version 16, subversion 3 (v5.16.3) built for darwin-2level (with 1 registered patch, see perl -V for more detail)

となり、バージョン変更もできたようでした。

しかし、いざ該当ファイルを開こうとしてもやはり500エラーが発生。
何か手掛かりがないかと、mampのphpinfoをみたところ、

Apache Version

Apache/2.4.46 (Unix) OpenSSL/1.0.2u PHP/7.4.21 mod_wsgi/3.5 Python/2.7.18 mod_fastcgi/mod_fastcgi-SNAP-0910052141 mod_perl/2.0.11 Perl/v5.30.1

イメージ説明
となっていることから、『Perl/v5.30.1』の部分がperlのバージョンが切り替わっていないのかと思っています。

mampで利用するpelのバージョンをperlbrewでインストールした5.16.3にするにはどうしたら良いのでしょうか。
サーバー関連知識が乏しく説明不足があれば追記いたします。
以上、ご教授いただけると幸いです。

補足

  • MacOS 13.4.1
  • MAMP 6.6
  • 該当cgiファイルのパーミッションは755になっている
  • cgiファイル1行目は「#! /usr/bin/perl」

2023.12.31追記

Terminalで、

% env

を叩いたところ、

PATH=/Users/xxx/perl5/perlbrew/bin:/Users/xxx/perl5/perlbrew/perls/perl-5.16.3/bin:/Users/xxxx/.nodebrew/current/bin:/opt/homebrew/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin

となっており、5.16.3にPATHが通っている(?)と思います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hiroki-o

2023/12/30 14:36

perl切り替え後、Apache再起動は実施しましたか?
truemind2002

2023/12/30 14:41

コメントありがとうございます! はい、mampやMacの再起動は何度もしてみましたが、ダメでした。
truemind2002

2023/12/31 02:17

>KojiDoiさん コメントありがとうございます。 こちら確認しましたが、コメントアウトされておりました。 解決法2の「DockerでPerl 使えばいいと思う」というのは、一旦調べてみます。
KojiDoi

2023/12/31 08:49

cgiのシェバングが#!/usr/bin/perlのままだと、呼び出されるperlは5.30.1のままだったりしませんか?
truemind2002

2023/12/31 11:10

>KojiDoiさん ご返答ありがとうございます! そうかもしれませんが、そこは本番環境と同じにしておかないといけないのです。。
guest

回答1

0

ベストアンサー

あくまでもMAMPにこだわるのであれば、本番環境と同じバージョンのPerlを同梱しているバージョン (あるいはそれに近いバージョン) のMAMPをインストールするのが最も確実ということになります。おそらくそういうものは入手不可能です。

そもそも、本番機のPerl 5.16.3は2013年という大昔にリリースされており、Perl自身はもちろんそれが動作する環境を含めて最近の環境とは互換性がない箇所が多々あると考えられます。

したがって、あくまで本番機に合わせた環境を用意したいということなら、OSインストールの時点から本番機と同じ方法で構築するのが唯一の現実的な方法だと思います。

一方で、Perl 5.16自体が古く、来年には開発コミュニテイのサポートが正式に打ち切られるため、今後のメンテナンスにも支障が出てくると思われます。本番機自体を最新のバージョンのPerlで動作するよう改修・移行することを考えたほうがよいのではないかとも思います。

投稿2023/12/31 06:39

編集2023/12/31 06:40
ikedas

総合スコア4337

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

truemind2002

2023/12/31 11:06

丁寧なご回答ありがとうございます! そうですよね、古いバージョンだということは理解しているのですが、そこは私にはどうにもできない部分でありまして。。。 MAMPは、今まで長年使ってきていて何の不便もなかったので、もしMAMPの環境で統一できれば、と思った次第です。 ただ、こだわっているというわけではないので、他の方法を模索したいと思います。 調べたら、Macにもともとapacheが入っているとのことで、それを使って何とかできないかやってみているところです。 ただ、これもまた詰まってしまっていますが笑(ユーザーディレクトリを設定してもforbiddenになってしまう) ※これはまた別枠で質問させていただきます
ikedas

2023/12/31 16:08

回答したことの繰り返しになりますが、本番環境が古すぎるので、別のアーキテクチャの別のOS (本番環境はmacOSではないですよね) の上にふっるーい環境と同じものを再現するのは非常に困難です。素直に本番機と同じ種類のCPUのマシンを用意して、OSを含め本番機と同じ種類・バージョンのソフトウェアをインストールして検証環境とするのが一番楽だと思いますよ。ご質問の状況では環境の差異が大きすぎます。
ikedas

2023/12/31 16:47

あと今気づきましたが、 そもそも#!行のパス/usr/bin/perlを変えてはいけないのなら、macOSで通常使われるPerlもこのパスなので、バージョンダウンはmacOSでPerlを使って動作している他のソフトウェアすべてに影響します。つまり、もしもバージョンダウンができたとしても、お使いのmacが正常に動作しなくなることがほぼ確実です。
truemind2002

2024/01/01 05:34

ご回答ありがとうございます! そうですね。ご助言助かります。 もろもろ再度よく考えたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問