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

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

ただいまの
回答率

90.48%

  • PHP

    20912questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Perl

    461questions

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

PHP5.3でperlクラスを利用したい

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 647

nananana

score 1

前提・実現したいこと

PHP5.3でperlクラスを利用したいと考えております。

良く知られたインストール方法の
pear install pecl/perl
ですと、どっさりエラーが出てきましたので、調べまして、
http://wp.kaz.bz/tech/2011/01/06/602.html
で紹介されたスクリプト(kazスクリプトとします)を利用することにしました。

ただ、39行目のsvn.php.netからphp_perl.cを取得が不可(Checkout view is disabled)になっていたので、
http://svn.php.net/viewvc/pecl/perl/trunk/php_perl.c?revision=289243&view=markup
からphp_perl.cの直接コードを取得してサーバーに置き、cpでコピーするようにしました。

ただ、それでもエラーが続いていたので、php_perl.cの37行目~40行目でパスを指定してkazスクリプトを実行したところ上記警告は出たものの、完了したようでした。

そして「php.ini」に「extension=perl.so」を記入し、httpdを再起動しました(停止・起動ともにOK)が、perlクラスを使ったPHPの実行で
PHP Fatal error:  Class 'Perl' not found
のままでした。

なお、phpinfoにPerlのセクションはありません。
また、「php.ini」の「extension_dir」は「perl.so」が入っているパスになっています。

インストールに成功したのに、phpinfoに表示されていないことがわからずにいます。
(「Build complete.」となっていても、成功とは言えないのか、別の手続きを行っていないのか…)

どなたかアドバイスをお願い致します。

よろしくお願い致します。

発生している問題・エラーメッセージ

/bin/sh /root/perl-1.0.0/libtool --mode=compile cc  -I. -I/root/perl-1.0.0 -DPHP_ATOM_INC -I/root/perl-1.0.0/include -I/root/perl-1.0.0/main -I/root/perl-1.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib  -DHAVE_CONFIG_H  -g -O2   -c /root/perl-1.0.0/php_perl.c -o php_perl.lo
libtool: compile:  cc -I. -I/root/perl-1.0.0 -DPHP_ATOM_INC -I/root/perl-1.0.0/include -I/root/perl-1.0.0/main -I/root/perl-1.0.0 -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /root/perl-1.0.0/php_perl.c  -fPIC -DPIC -o .libs/php_perl.o
/usr/include/php/main/php.h:33 から include されたファイル中,
                 /root/perl-1.0.0/php_perl.c:49 から:
/usr/include/php/main/php_config.h:2417:1: 警告: "_GNU_SOURCE" が再定義されまし た
/usr/lib64/perl5/CORE/perl.h:38 から include されたファイル中,
                 /root/perl-1.0.0/php_perl.c:38 から:
/usr/lib64/perl5/CORE/config.h:2977:1: 警告: ここが以前の宣言がある位置です
/root/perl-1.0.0/php_perl.c: In function ‘php_perl_sv_to_zval_noref’:
/root/perl-1.0.0/php_perl.c:540: 警告: passing argument 3 of ‘Perl_sv_2pv_flags’ from incompatible pointer type
/usr/lib64/perl5/CORE/proto.h:3039: note: expected ‘STRLEN *’ but argument is of type ‘int *’
/root/perl-1.0.0/php_perl.c: In function ‘php_perl_call_method’:
/root/perl-1.0.0/php_perl.c:680: 警告: passing argument 3 of ‘Perl_sv_2pv_flags’ from incompatible pointer type
/usr/lib64/perl5/CORE/proto.h:3039: note: expected ‘STRLEN *’ but argument is of type ‘int *’
/root/perl-1.0.0/php_perl.c: In function ‘php_perl_call’:
/root/perl-1.0.0/php_perl.c:743: 警告: passing argument 3 of ‘Perl_sv_2pv_flags’ from incompatible pointer type
/usr/lib64/perl5/CORE/proto.h:3039: note: expected ‘STRLEN *’ but argument is of type ‘int *’
/root/perl-1.0.0/php_perl.c: In function ‘zim_Perl_eval’:
/root/perl-1.0.0/php_perl.c:1905: 警告: passing argument 3 of ‘Perl_sv_2pv_flags’ from incompatible pointer type
/usr/lib64/perl5/CORE/proto.h:3039: note: expected ‘STRLEN *’ but argument is of type ‘int *’

該当のソースコード

#! /bin/sh

PACK=perl-1.0.0

patch_php_perl_h() {

local TMPPATCH=/tmp/tmp.patch


cat > ${TMPPATCH} << _EOT_
*** php_perl.h  2011-01-06 11:26:35.000000000 +0900
--- php_perl.h2 2011-01-06 11:26:59.000000000 +0900
***************
*** 35,38 ****
--- 35,39 ----
  #include "TSRM.h"
  #endif

+ #define PHP_PERL_VERSION 0
  #endif
_EOT_


patch < ${TMPPATCH}
rm -rf ${TMPPATCH}
}




# main process

# Download: perl-1.0.0.tgz
wget http://pecl.php.net/get/${PACK}.tgz
tar zxvf ${PACK}.tgz

# Download: newer version of php_perl.h
# wget -O ${PACK}/php_perl.c http://svn.php.net/viewvc/pecl/perl/trunk/php_perl.c?view=co&pathrev=289243
cp ./php_perl.c ${PACK}/php_perl.c

cd ${PACK}

# patch to php_perl.h
patch_php_perl_h

# install
phpize
./configure
make
make install



echo "php.ini に下記を追記し httpd を再起動してください。"
echo "extension=perl.so"

試したこと

補足情報(言語/FW/ツール等のバージョンなど)

OSはCentOS release 6.7です。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

check解決した方法

0

mod_perlをインストールしたら解決しました。

yum -y install mod_perl

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/05/08 15:57

    解決されたようでよかったです。まだ質問が「受付中」になっていますが、いったん「解決済」にされてはいかがでしょうか。

    キャンセル

関連した質問

  • 受付中

    swigが-cgoを読み込まない問題

    swigがc++を読み込んでくれません swig 3.0.8 go 1.53 を用いていますが swig -go -c++ -cgo -intgosize 64 *.i

  • 受付中

    perlの変数をphpへ渡したい

    perlの変数をphpへ渡すにはどうしたら良いでしょうか? phpはやっとこさ分かるのですが、perlは良くわかりません、perlで書かれたコードを使用しなければいけないので

  • 解決済

    フォームから複数のデータを送信する場合のnameのつけ方

    PHPで例えばショッピングカートの機能を持つフォームを作成するとして、複数の商品を登録する場合はフォームの要素名が重複することになります。 この場合、要素の名前を変える必要が

  • 解決済

    glassfishからDerbyに接続したい

    前提・実現したいこと derbyへの接続ができずに困っています。 会社から本サイトへ投稿することができないため、恐れ入りますが、返答、バージョンの確認、ソースの開示等、タイムラ

  • 解決済

    PHPの合体

    下記で3つのURLをクロールしてくるmultiCrawler.phpがあります。 (multiCrawler.phpそのものは省略) 【クロールソース】 <?php $

  • 解決済

    anyenvで導入したphpenv(php-build含)でPHPをインストールできません

    環境 ハード MacBook Air (13-inch, Early 2015) OS OS X El Capitan 10.11.6(15G1004) CPU

  • 解決済

    Apacheの設定が反映されない

    Apacheの設定ファイル /etc/httpd/conf にエラーログを吐き出す場所を指定する項目がありますが、下記のようにエラーログを作成して、試しにさ、くらVPSのCentO

  • 解決済

    文字列の条件式をもとに複雑なフラグの判定を行いたい

    「&&」を AND, 「||」を OR とするルールでかかれた文字列の条件式をもとにフラグのチェックをしたいと考えています。 "A && (B || C)" であれば「フラグA

同じタグがついた質問を見る

  • PHP

    20912questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • Perl

    461questions

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