【问题标题】:Mavericks php.ini configuration, working with no ini fileMavericks php.ini 配置,不使用ini文件
【发布时间】:2014-05-17 14:15:56
【问题描述】:

我最近将mcrypt 安装到 OS X 10.9 中的 PHP 的默认安装中,在完成所有配置和安装后,我去打开了php.ini 中的 so。我注意到没有默认的php.ini,所以我复制了php.ini.default,重命名它,添加extension=mcrypt.so,然后重新启动Apache。

执行此操作后,我的phpinfo() 页面什么也没有显示,并且我的 php 脚本都不起作用。

我可以从命令行运行php -i,看看phpinfo()应该显示什么,crypt库显示在那里,没有错误。

如果我从/etc/private/etc 中删除所有php.ini 文件,然后重新启动Apache,PHP 将再次开始工作。

查看phpinfo,它将/etc 显示为php.ini 文件的位置。 php.ini 是否有一些默认位置在丢失时获取 ini 文件?

我认为它一定是php.ini 中的某些内容导致了错误并使 php 无法工作,但使用默认的 ini 文件会导致相同的结果。

【问题讨论】:

  • 您可以使用ini_get()ini_set()函数来帮助调试您的问题。
  • 如果 php 无法运行,那么这些函数将无法在脚本中运行。当我可以运行它时,没有 ini 文件,我可以运行 phpinfo(),它包含 ini_get 将返回的所有变量。
  • “我可以从命令行运行php -i,看看phpinfo() 中应该显示什么……”这个假设是你的第一个问题。 CLI PHP 和 Apache PHP 模块使用不同的php.ini 配置文件。因此,您正在运行的php -i 永远不会帮助您解决问题。此外,您可能会检查您是否仅为 PHP CLI 编译了mcrypt,并且由于路径混乱等原因,Apache 模块现在正在阻塞它。一般来说,我建议您改用 MAMP (Mac OS X LAMP) 来做这样的事情。在 Mac OS X 上从源代码编译对于这样的事情很糟糕。

标签: php osx-mavericks ini


【解决方案1】:

我解决了自己的问题。我注意到phpinfoScan this dir for additional .ini files,即/Library/Server/Web/Config/php 我创建了这些目录,设置了正确的所有者和权限,将我的php.ini 文件复制到那里,然后重新启动了服务器。我再次得到一个空白信息文件,这意味着我的 ini 文件中的某些内容导致了问题。我删除了除了我添加的指令之外的所有内容,例如extension=mcrypt.so,重新启动了 Web 服务器,并且信息完全按照我的预期显示。

【讨论】:

  • 这适用于我在 OS X 10.9.5 和 PHP 5.4.30 上。我的文件系统上的任何地方都没有 php.ini,但是创建目录 + 文件 /Library/Server/Web/Config/php/php.ini 使我能够为我想要使用的 PHP 扩展指定共享对象库的名称.
【解决方案2】:

如果breakit2fixit 的回答没有帮助,希望这会有所帮助。我运行以下命令来查找系统上的任何其他 php.ini 文件:

find / -name php\*ini

我发现一个隐藏在另一个版本的 PHP 中的小家伙不知何故发现它进入了我的盒子。

在这种情况下,它位于/usr/local/php5-5.5.14/lib/php.ini

一旦我改变了,我就跑了:

sudo apachectl restart

这对我有用。关键是找到一个流浪的 PHP 安装。奇怪的是,运行php --ini 告诉我它正在加载/etc/php.ini 文件...

【讨论】:

    猜你喜欢
    • 2019-02-02
    • 1970-01-01
    • 2013-08-20
    • 2018-12-16
    • 2013-10-12
    • 2012-12-06
    • 2011-11-18
    • 2017-05-04
    • 2020-08-08
    相关资源
    最近更新 更多