我需要运行一个 Perl 脚本,因为我需要一个 Perl 有而 PHP 没有的模块。
这是我在 PHP 中用于测试目的的代码
<?php
echo ("Hello World");
$perl = new Perl();
$perl->require("someperlscript.pl");
我有
Hello WorldPHP Fatal error: Class 'Perl' not found in /var/virtual/abc.com/testperl/testperl.php on line 7
PHP Stack trace:
PHP 1. {main}() /var/virtual/abc.com/testperl/testperl.php:0
然后我尝试安装无效。
我应该怎么做才能让 Perl 在 ubuntu 12.10 服务器版本中运行?
答案1
此答案自 2013 年 1 月 29 日起有效。
首先,在 ubuntu 中执行
wget http://pecl.php.net/get/perl-1.0.1.tgz
下载 tgz 文件http://pecl.php.net/package/perl
解压 tar
tar -zxvf perl-1.0.1.tgz
进入解压后的文件夹
cd perl-1.0.1
删除当前的 php_perl.c,因为出于某种原因,它不能与我的 php5 一起使用。
从 github repo 下载另一个 php_perl.chttps://github.com/do-aki/php-ext-perl
wget https://raw.github.com/do-aki/php-ext-perl/a3d7db22eb7964ea9cb39ea2f866d10df26655d4/php_perl.c
逐行运行
export PHP_PREFIX="/usr"
export PERL_PREFIX="/usr"
$PHP_PREFIX/bin/phpize
./configure --with-perl=$PERL_PREFIX --with-php-config=$PHP_PREFIX/bin/php-config
make
如果出现类似错误/usr/bin/ld: cannot find -lperl
,则需要安装
sudo apt-get install libperl-dev
安装扩展(此步骤可能需要 root 权限)
make install
将 perl 扩展添加到您的 php.ini 中(此步骤可能需要 root 权限)
extension=perl.so
重新启动 php5-fpm
sudo /etc/init.d/php5-fpm restart
运行 Perl 时,可能会遇到与语言环境有关的问题。
查看缺失的语言环境。假设您缺少 en_SG 和 en_SG.UTF-8
尝试
sudo locale-gen en_SG en_SG.UTF-8
sudo dpkg-reconfigure locales
然后重新启动。
如果你仍有语言环境问题,
尝试
sudo nano /etc/environment
将缺失的区域设置附加到 LC_ALL
LC_ALL = "en_SG.UTF-8"
重启。
我要感谢tm064
#perl 和NullDev
#ubuntu 帮助我找到这个解决方案。
答案2
自 2013-01-23 起,perl-1.0.1.tgz 有了更新版本。它有更合适的 package.xml(在 SuSE 12.2 下试过 - 一切正常)。