use*_*687 39 php apache macos mcrypt
为潜在的n00b问题提前道歉,我正在尝试在我的OSX Mountain Lion机器上安装PHP的mcrypt扩展.
终端中的以下步骤是我到目前为止完成PHP安装所做的工作
cd /path/to/downloaded/php-5.3.21/ext/mcrypt/
/usr/bin/phpize
./configure
cd /path/to/downloaded/php-5.3.21
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs
make
sudo make install
Run Code Online (Sandbox Code Playgroud)
这似乎运作良好,并安装PHP 5.3.21罚款.我已经完成了
sudo nano /private/etc/php.ini
Run Code Online (Sandbox Code Playgroud)
并包括在内
extension=mcrypt.so
Run Code Online (Sandbox Code Playgroud)
随着Apache重启,phpinfo()没有显示加载了mcrypt扩展.
然后我尝试在php.ini中指定extension_dir,再次没有运气.
我已经做好了
locate mcrypt.so
/opt/local/lib/php/extensions/no-debug-non-zts-20090626/mcrypt.so
/usr/local/Cellar/php53-mcrypt/5.3.18/mcrypt.so
Run Code Online (Sandbox Code Playgroud)
并尝试将这两个目录作为extension_dir,没有运气.
经过谷歌搜索后,我也尝试了以下内容
./configure --with-config-file-path=/private/etc/php.ini --with-apxs2=/usr/sbin/apxs --with-mcrypt
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,但随后"制造",它返回
ext/mcrypt/mcrypt.o: No such file or directory
ext/mcrypt/mcrypt_filter.o: No such file or directory
Run Code Online (Sandbox Code Playgroud)
再次,没有成功.
我究竟做错了什么?似乎mcrypt.so的物理编译没有发生,或者编译错误,因为我怀疑在locate下找到另一个mcrypt.so?
有人请帮忙吗?我在Google搜索页面上浏览过没有运气的页面!
Dav*_*ell 77
我倾向于在Mac上使用Homebrew.它将为您安装和配置所有的东西.
http://mxcl.github.com/homebrew/
然后你应该能够安装它,brew install mcrypt php53-mcrypt它就是Just Work(tm).
您可以替换53您正在使用的任何PHP版本,例如php56-mcrypt或php70-mcrypt.如果您不确定,请使用brew search php.
还要记住,如果你使用内置的Mac PHP安装到/usr/bin你可以看到你which php在终端使用哪个PHP ,它将返回路径.
ckm*_*ckm 50
我刚刚在Mountain Lion上看过这个.自制软件封锁了它认为缺失的libiconv但实际上是最新的.经过一个小时试图让它识别出libiconv后,我放弃并以旧的时尚方式安装它,花了整整五分钟......
(download your php version)
$ wget http://www.php.net/get/php-5.3.21.tar.gz/from/a/mirror
$ tar -xvzf php-5.3.21.tar.gz
$ cd php-5.3.21/ext/mcrypt
$ phpize
$ ./configure
$ make
$ make test
$ sudo make install
Run Code Online (Sandbox Code Playgroud)
mcrypt.so现在在你的PHP ext目录中(/usr/lib/php/extensions/no-debug-non-zts-20090626/在我的例子中),现在你需要添加到php.ini作为模块
$ vi /etc/php.ini
$ (insert) extension=mcrypt.so
$ sudo apachectl restart
Run Code Online (Sandbox Code Playgroud)
完成 - 不需要酿造.HTH有人.
Wil*_*mer 38
mcrypt不使用port或brew注意:这些说明很长,因为它们打算彻底.这个过程实际上非常简单.如果你是一个乐观主义者,你可以跳到构建mcrypt扩展 部分,但你可能会看到我做的错误,告诉我安装
autoconf和libmcrypt第一个.
我刚刚在全新安装的OSX 10.9上完成了这项工作.对我有用的解决方案非常接近ckm的解决方案- 我完整地包括他们的步骤以及我自己的步骤.我的主要目标(除了"拥有mcrypt")是以对整个系统影响最小的方式执行安装.这意味着手动操作(不port,不brew)
要手动完成任务,首先需要一些依赖项:一个用于构建PHP模块,另一个用于构建PHP模块mcrypt.这些都是autoconf和libmcrypt,其中任何一个,你可能已经,但两者都不你将有一个新安装的OSX 10.9.
Autoconf(缺乏更好的描述)用于告诉不完全不同但仍然非常不同的系统如何编译.它允许您使用相同的一组基本命令在Linux上构建模块,就像在OSX上一样,尽管它们具有不同的文件系统层次结构等等.我使用了Ares在StackOverflow上描述的方法,我将在这里重现为了完整.这个非常简单:
$ mkdir -p ~/mcrypt/dependencies/autoconf
$ cd ~/mcrypt/dependencies/autoconf
$ curl -OL http://ftpmirror.gnu.org/autoconf/autoconf-latest.tar.gz
$ tar xzf autoconf-latest.tar.gz
$ cd autoconf-*/
$ ./configure --prefix=/usr/local
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)
接下来,运行以下命令验证安装:
$ which autoconf
Run Code Online (Sandbox Code Playgroud)
应该返回 /usr/local/bin/autoconf
接下来,您将需要libmcrypt,用于提供mcrypt扩展的内核(扩展本身是一个PHP接口提供到此库中).我使用的方法基于这里描述的方法,但我试图尽可能地简化事情:
首先,下载SourceForgelibmcrypt提供的源代码,截至撰写本文时,可以使用以下内容:
http://sourceforge.net/projects/mcrypt/files/Libmcrypt/2.5.8/libmcrypt-2.5.8.tar.bz2/download
你需要跳过标准的SourceForge环以获得真正的下载链接,但是一旦你拥有它,你可以将它传递给这样的东西:
$ mkdir -p ~/mcrypt/dependencies/libmcrypt
$ cd ~/mcrypt/dependencies/libmcrypt
$ curl -L -o libmcrypt.tar.bz2 '<SourceForge direct link URL>'
$ tar xjf libmcrypt.tar.bz2
$ cd libmcrypt-*/
$ ./configure
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)
我知道验证这是否有效的唯一方法是通过扩展本身的./configure步骤mcrypt(下面)
这是我们的实际目标.希望现在已经结束了对依赖地狱的短暂处理.
首先,我们需要获取mcrypt扩展的源代码.这是最容易获得的,隐藏在所有PHP的源代码中.因此:确定您需要的PHP源代码版本.
$ php --version # to get your PHP version
Run Code Online (Sandbox Code Playgroud)
现在,如果你很幸运,你可以从主镜下载你当前的版本.如果是,您可以键入以下内容:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -L -o php-5.4.17.tar.bz2 http://www.php.net/get/php-5.4.17.tar.bz2/from/a/mirror
Run Code Online (Sandbox Code Playgroud)
不幸的是,我当前的版本(在这种情况下为5.4.17)不可用,所以我需要使用http://downloads.php.net/stas/(也是一个官方的PHP下载站点)的替代/历史链接.对于这些,您可以使用以下内容:
$ mkdir -p ~/mcrypt/php
$ cd ~/mcrypt/php
$ curl -LO http://downloads.php.net/stas/php-5.4.17.tar.bz2
Run Code Online (Sandbox Code Playgroud)
再次,根据您当前的版本.
一旦拥有它,(以及所有依赖项,从上面开始),您就可以进入实际构建/安装模块的主要过程.
$ cd ~/mcrypt/php
$ tar xjf php-*.tar.bz2
$ cd php-*/ext/mcrypt
$ phpize
$ ./configure # this is the step which fails without the above dependencies
$ make
$ make test
$ sudo make install
Run Code Online (Sandbox Code Playgroud)
理论上,mcrypt.so现在是在你的PHP扩展目录中.接下来,我们需要告诉PHP它.
您的php.ini文件需要被告知加载mcrypt.默认情况下,在OSX 10.9中,它实际上具有mcrypt特定的配置信息,但mcrypt除非您告知它,否则它实际上不会激活.
php.ini默认情况下,该文件不存在.相反,该文件/private/etc/php.ini.default列出了默认配置,并且可以用作创建"true"的良好模板php.ini(如果它尚不存在).
要确定是否php.ini已存在,请运行:
$ ls /private/etc/php.ini
Run Code Online (Sandbox Code Playgroud)
如果有结果,它已经存在,您应该跳过下一个命令.
要创建php.ini文件,请运行:
$ sudo cp /private/etc/php.ini.default /private/etc/php.ini
Run Code Online (Sandbox Code Playgroud)
接下来,您需要添加以下行:
extension=mcrypt.so
Run Code Online (Sandbox Code Playgroud)
在文件的某个地方.我建议搜索文件;extension=,并在第一次出现之前立即添加.
完成此操作后,安装和配置即告完成.您可以通过运行来验证这是否有效:
php -m | grep mcrypt
Run Code Online (Sandbox Code Playgroud)
哪个应输出" mcrypt",而不是别的.
如果您使用PHP依赖于Apache httpd,则需要重新启动它才能注意到Web上的更改.你可以这样做:
$ sudo apachectl restart
Run Code Online (Sandbox Code Playgroud)
而且你已经完成了.
cwd*_*cwd 10
PHP抱怨如果mcrypt.so使用语法包含其中一个文件extension="mcrypt.so"但文件不在extension_dir路径中(使用<?php phpinfo(); ?>或php -i检查).
它还会告诉您php.ini正在加载哪个配置文件,以便您知道设置的来源.最有可能的是,/usr/local/etc/php/5.4/php.ini如果你使用的是自制软件版本.
请注意其下面的部分,例如"扫描此目录以获取其他.ini文件",因为这意味着它为您提供了放置自己文件的位置,就像tweaks.ini在主配置文件之后加载一样,这样您就可以做出改变并轻松跟上它们.还要记住,此目录中的所有文件都按字母顺序加载,因此如果您有一个adjustments.ini包含mcrypt指令的调用,并且有一个mcrypt.ini,则很可能会覆盖您的设置.
指定的一种替代方法extension="mcrypt.so"是指定mcrypt.so文件的完整路径.另一个选项是编辑extension_dir设置.
在小牛队,我没有必要做.我做了全新的安装,homebrew然后使用以下方法添加了josegonzalez水龙头:
brew tap josegonzalez/homebrew-php
Run Code Online (Sandbox Code Playgroud)
(我的另一台笔记本电脑正在运行Mountain Lion,并且在此设置中也使用了自制软件.)
在您使用了那个非常棒的回购后,您可以安装php并mcrypt使用以下内容:
brew install php54 php54-mcrypt
Run Code Online (Sandbox Code Playgroud)
我强烈建议在从源代码下载和构建之前尝试这条路线.从源代码构建并不难 - 但我不想保持这一点.这是homebrew首先使用的原因之一- 它是一个包管理器(有一个巨大的社区).
该homebrew项目有很多开发项目 - 如果您遇到问题,我建议您查看他们的问题页面
所以,是的,你可以从源代码构建它,如果你只是想让mcrypt工作,那么现在看起来似乎是一个不错的选择,但你可能会讨厌自己以后这样做...
如果你不想使用php54那里也有php53分支.他们在回购中有一些关于如何使用它们/在它们之间切换的指令.
如果您是自制新手,您应该知道您可以查看其他可用的内容brew search php54,例如:
php54 php54-lzf php54-snappy
php54-amqp php54-mailparse php54-solr
php54-apc php54-mcrypt php54-ssh2
php54-apcu php54-memcache php54-stats
php54-boxwood php54-memcached php54-svm
php54-chdb php54-midgard2 php54-tidy
php54-couchbase php54-mongo php54-timezonedb
php54-dbase php54-msgpack php54-tokyotyrant
php54-ev php54-mysqlnd_ms php54-twig
php54-gearman php54-oauth php54-uploadprogress
php54-geoip php54-opcache php54-uuid
php54-gmagick php54-parsekit php54-varnish
php54-graphdat php54-pcntl php54-wbxml
php54-http php54-pdflib php54-xcache
php54-igbinary php54-phalcon php54-xdebug
php54-imagick php54-proctitle php54-xhgui
php54-inclued php54-pspell php54-xhp
php54-intl php54-pthreads php54-xhprof
php54-ioncubeloader php54-raphf php54-xmldiff
php54-jsmin php54-redis php54-yac
php54-judy php54-riak php54-yaf
php54-leveldb php54-runkit php54-yaml
php54-libevent php54-scrypt php54-yaz
php54-libvirt
Run Code Online (Sandbox Code Playgroud)
homebrew安装mcryptextension_dir路径并确定mcrypt.so文件的位置,并查看是否存在差异(或指定完整路径)小智 5
使用brew的解决方案仅在以下之后工作:在php.ini中
nano /private/etc/php.ini
Run Code Online (Sandbox Code Playgroud)
添加此行:
extension="/usr/local/Cellar/php53-mcrypt/5.3.26/mcrypt.so"
Run Code Online (Sandbox Code Playgroud)
警告!设置正确的PHP版本.
| 归档时间: |
|
| 查看次数: |
110251 次 |
| 最近记录: |