最终更新。
问题已解决。
我解决问题的方法是按照以下链接的说明完全从源代码重新安装 Apache 和 PHP。
http://dan.drydog.com/apache2php.html
然后按照以下说明直接将扩展构建到 PHP 中来进行扩展 下面的链接。
唯一的问题是二进制文件都只在特定路径中,我认为这是一个容易解决的问题。
谢谢大家,这是我在 Stackoverflow 中的第一篇文章,我花了一整天的时间来制作我的第一个 php 扩展。虽然有点难,但是我喜欢! :D
原始问题
我正尝试按照以下链接的说明构建一个 php 扩展:
http://docstore.mik.ua/orelly/webprog/php/ch14_03.htm
我使用以下步骤将“rot13”的扩展构建到 php 中
./buildconf
./configure --enable-rot13
make
sudo make install
然后我通过命令行 php 测试了扩展。输出与上面的文章完全一样。
我想在我将扩展构建到 php 本身之后,我不需要关心 php.ini 文件。然后我尝试在浏览器中测试扩展,我发现 phpinfo() 页面没有显示任何关于新扩展的信息,而 php -m 命令显示我的扩展已加载。我检查了apache2的日志,没有错误。
我在谷歌上搜索了将近一天,但一无所获。一些线程在 stackoverflow 中类似,但没有真正有效的解决方案。
我的系统是 Ubuntu 11.10 和 php 5.3.10 和 apache2.2.20。
有知道的 friend 请指教。谢谢!
更新:
我确实将 extension=rot13.so 放在/etc/php5/apache2/php.ini 路径下的 php.ini 文件中,但现在每当我重新启动 apache2 服务器时,我都会收到以下错误。
PHP Warning: PHP Startup: rot13: Unable to initialize module
Module compiled with build ID=API20090626,TS,debug
PHP compiled with build ID=API20090626,NTS
这些选项需要在第 0 行的 Unknown 中匹配
任何人都知道导致此错误的原因吗?
顺便说一句,当我编译扩展时,我确实使用了 ./configure --enable-rot13 --with-php-config=/usr/local/bin/php-config 来确保它使用的配置文件PHP.
再次更新:
我发现网页中的 phpinfo() 具有不同版本的 php -i 我从命令行获取...这有多奇怪?我会尝试用谷歌搜索如何解决这个冲突。
最佳答案
在 Ubuntu 中,有 2 个 php.ini 文件,一个用于 CLI,一个用于 apache。
默认情况下,它们位于 /etc/php5/cli/php.ini 和 /etc/php5/apache2/php.ini。
在您的情况下,您还需要在 apache2 php.ini 文件中启用扩展。
关于PHP 扩展在命令行 (cli) 中加载但未由 apache 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9766622/
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co
我想这样组织C源代码:+/||___+ext||||___+native_extension||||___+lib||||||___(Sourcefilesarekeptinhere-maycontainsub-folders)||||___native_extension.c||___native_extension.h||___extconf.rb||___+lib||||___(Rubysourcecode)||___Rakefile我无法使此设置与mkmf一起正常工作。native_extension/lib中的文件(包含在native_extension.c中)将被完全忽略。
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
我从Ubuntu服务器上的RVM转移到rbenv。当我使用RVM时,使用bundle没有问题。转移到rbenv后,我在Jenkins的执行shell中收到“找不到命令”错误。我内爆并删除了RVM,并从~/.bashrc'中删除了所有与RVM相关的行。使用后我仍然收到此错误:rvmimploderm~/.rvm-rfrm~/.rvmrcgeminstallbundlerecho'exportPATH="$HOME/.rbenv/bin:$PATH"'>>~/.bashrcecho'eval"$(rbenvinit-)"'>>~/.bashrc.~/.bashrcrbenvversions
我有一个问题。我想从另一个ruby脚本运行一个ruby脚本并捕获它的输出信息,同时让它也输出到屏幕。亚军#!/usr/bin/envrubyprint"Enteryourpassword:"password=gets.chompputs"Hereisyourpassword:#{password}"我运行的脚本文件:开始.rboutput=`runner`putsoutput.match(/Hereisyour(password:.*)/).captures[0].to_s正如您在此处看到的那样,存在问题。在start.rb的第一行,屏幕是空的。我在运行程序中看不到“输入您的密