草庐IT

PHP.ini 不会自动加载,即使它存在于配置位置

coder 2024-04-12 原文

好的,这可能只是我对 php 的了解不够,但它就在这里。

我在 Ubuntu Hardy 上。我有一个使用这些参数编译的 PHP 自定义编译版本。

./configure
--enable-soap
--with-zlib
--with-mysql
--with-apxs2=[correct path]
--with-config-file-path=[correct path]
--with-mysqli
--with-curlwrappers
--with-curl
--with-mcrypt

我使用了命令pecl install pecl_http安装 http.so 扩展。它位于我的 php.ini 的正确模块目录中。我的 php.ini 正在加载,我可以更改 ini 中的内容并影响 php。我已包含 extension=http.so在我的 php.ini 中行。

那工作得很好。直到我添加了这些编译选项以添加 imap
--with-openssl
--with-kerberos
--with-imap
--with-imap-ssl

失败是因为我需要由 apt-get install libc-client-dev 修复的 c-client 库之后 php 编译得很好,我有工作 imap 支持,哇。

但是,现在我对 HttpRequest 的所有调用(它是 http.so 中 pecl_http 扩展的一部分)导致 Fatal error: Class 'HttpRequest' not found错误。我认为 http.so 模块由于某种原因不再加载,但我找不到任何显示原因的错误。

您可能会说“您是否尝试过撤消新的 imap 设置?”我会回答的。是的,我有。我直接撤消了所有配置更改并卸载了 c-client 库,但仍然无法正常工作。我觉得这很奇怪......我没有做任何会导致这个问题的更改。在查看之后,我还发现不仅不再加载 http 扩展,而且我通过 php.ini 加载的所有扩展也不再加载。

有人至少可以给我一些进一步的调试步骤吗?到目前为止,我已经尝试启用所有错误,包括我的 php.ini 中的启动错误,这适用于其他错误,但我在命令行或通过 apache 都没有看到任何启动错误。鉴于如果我运行 php_info() 我会得到 php.ini 中的设置,因此似乎再次解析了 php.ini。

编辑 似乎只听了一些 php.ini 设置。有没有办法测试我的 php.ini?

编辑编辑看来我又弄错了,php.ini 不再被加载。但是,如果我运行 php_info() 我会发现它正在正确的位置寻找我的 php.ini。

编辑 编辑 编辑 我的配置位于下面的配置文件路径位置,但它说没有加载配置文件。 WTF权限问题?它目前是 644,所以如果不写,每个人都应该能够阅读它。我尝试将其设为 777,但没有成功。
Configuration File (php.ini) Path   /etc/php.ini
Loaded Configuration File   (none)

编辑 编辑 编辑 编辑 通过使用 -c 命令在命令行上加载 ini,我能够运行我的文件并使用 -m 显示我的模块已加载
所以 php.ini 没有任何问题

编辑 编辑 编辑 编辑 编辑 我已经向我指出,我的 ini 目录配置应该是在文件本身中查找 php.ini 文件的路径。为此,我尝试了设置/etc、/etc/,并让 php 设置默认目录,然后将我的 ini 文件移动到该目录中。全部失败:(

编辑 编辑 编辑 编辑 编辑 我已经向我指出,我的 ini 目录配置应该是在文件本身中查找 php.ini 文件的路径。为此,我尝试了设置/etc、/etc/,并让 php 设置默认目录,然后将我的 ini 文件移动到该目录中。全部失败:(

编辑 编辑 编辑 编辑 编辑 更多信息, php --ini 的命令行运行和它在 php 设置中指向的 ls 目录。还可以在运行成功的命令行上使用 -c 选项运行,而不是在我不包含 -c 时运行
j@j:/usr/local/lib$ php -ini | grep Configuration
Configuration File (php.ini) Path => /usr/local/lib
Loaded Configuration File => (none)
Configuration
j@j:/usr/local/lib$ ls /usr/local/lib
php  php.ini  python2.5  site_ruby
j@j:/usr/local/lib$ php -c /usr/local/lib/php.ini /var/www/toolbelt/test.php
j@j:/usr/local/lib$ php /var/www/toolbelt/test.php

Fatal error: Class 'HttpRequest' not found in /var/www/toolbelt/test.php on line 7
jonathan@jonathan:/usr/local/lib$

编辑 编辑 编辑 编辑 编辑 编辑 编辑 更多信息。利用我测试的另一篇堆栈交换文章中显示的 strace 方法,查看是否有任何尝试打开在加载 php.ini 时所做的 ini 文件。没有
j@j:/usr/local/lib$ sudo strace  -e trace=open php -ini 2>&1 |grep  php.ini
Configuration File (php.ini) Path => /usr/local/lib
j@j:/usr/local/lib$ sudo strace  -e trace=open php -ini 2>&1 |grep  /usr/local/lib
Configuration File (php.ini) Path => /usr/local/lib
extension_dir => /usr/local/lib/php/extensions/no-debug-non-zts-20060613 => /usr/local/lib/php/extensions/no-debug-non-zts-20060613
include_path => .:/usr/local/lib/php => .:/usr/local/lib/php

最佳答案

好的,希望这可以防止其他人将头撞到墙上几个小时。

我在干净构建我的 php.ini 时找到了自己的解决方案。事实证明,您可以更改 with-config-file-path选项并让它改变 phpinfo() 和 php -ini 输出中显示的路径。但是,如果您不清理构建,则实际使用该设置的地方不会被重建,并且会破坏您的构建。

自我注意:总是清理你的构建。我以前知道这一点,但被重建实际上改变了 php 告诉我目录的事实而被抛弃了。

关于PHP.ini 不会自动加载,即使它存在于配置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4950941/

有关PHP.ini 不会自动加载,即使它存在于配置位置的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

  3. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移: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

  4. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  5. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  6. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  7. Ruby Sinatra 配置用于生产和开发 - 2

    我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm

  8. ruby - 即使失败也继续进行多主机测试 - 2

    我已经构建了一些serverspec代码来在多个主机上运行一组测试。问题是当任何测试失败时,测试会在当前主机停止。即使测试失败,我也希望它继续在所有主机上运行。Rakefile:namespace:specdotask:all=>hosts.map{|h|'spec:'+h.split('.')[0]}hosts.eachdo|host|begindesc"Runserverspecto#{host}"RSpec::Core::RakeTask.new(host)do|t|ENV['TARGET_HOST']=hostt.pattern="spec/cfengine3/*_spec.r

  9. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的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

  10. ruby-on-rails - rspec - 如何检查方法是否存在? - 2

    我的模型有defself.empty_building//stuffend我怎样才能对这个现有的进行rspec?,已经尝试过:describe"empty_building"dosubject{Building.new}it{shouldrespond_to:empty_building}endbutgetting:Failure/Error:it{shouldrespond_to:empty_building}expected#torespondto:empty_building 最佳答案 你有一个类方法self.empty_bu

随机推荐