开发者社区 问答 正文

为什么云服务器 ECS Linux php-fpm启动报错:allow_call_time_pass_reference



问题描述





php-fpm启动失败,报错
  1. /etc/init.d/php-fpm restart Gracefully shutting down php-fpm warning, no pid file found - php-fpm is not running ? Starting php-fpm
  2. Fatal error:  Directive 'allow_call_time_pass_reference' is no longer available in PHP in Unknown on line 0



问题原因





该问题一般是由于 php.ini 配置中开启了 allow_call_time_pass_reference = on 参数导致。


处理办法





在php目前的高版本中未对此参数提供兼容支持,需要注释掉。在 php.ini 中找到 allow_call_time_pass_reference = on 对应条目,前面加;号注释后,重新启动 php-fpm 即可。

如果问题还未能解决,您可以到阿里云社区进行 免费咨询,或联系云市场商家 寻求帮助

展开
收起
boxti 2017-10-23 11:21:03 2302 分享 版权
阿里云 AI 助理回答

解决方案

  1. 问题描述

    • 用户尝试重启php-fpm服务时遇到错误,提示找不到pid文件且php-fpm未运行。在尝试启动php-fpm时,又遇到Fatal error: Directive 'allow_call_time_pass_reference' is no longer available in PHP的报错信息。
  2. 问题原因

    • 报错指出allow_call_time_pass_reference指令不再被PHP支持,此问题源于php.ini配置文件中该指令被设置为开启状态。
  3. 解决步骤

    • 编辑php.ini配置文件

      1. 找到您的php.ini文件位置(通常位于/etc/php/版本号/fpm/php.ini或已知路径下)。
      2. 使用文本编辑器打开php.ini文件,如使用vi /etc/php/版本号/fpm/php.ini命令。
      3. 搜索allow_call_time_pass_reference,找到相应行。
      4. 在该行前添加分号(;)以注释掉这一配置项,修改后应类似这样:;allow_call_time_pass_reference = on
    • 重新启动php-fpm服务

      • 使用以下命令尝试重新启动php-fpm服务:service php-fpm restartsystemctl restart php-fpm,具体命令依据您的系统而定。
    • 验证修复

      • 观察重启命令的输出,确认是否还有错误信息。
      • 可以通过运行php -v检查PHP版本和状态,确保修改生效且php-fpm正常启动。
  4. 注意事项

    • 在编辑配置文件之前,建议先备份原文件,以防修改出错时可以快速恢复。
    • 确认您对php.ini所做的更改适用于当前正在使用的PHP版本。
    • 如果问题依旧存在,检查php-fpm的日志文件(通常位于/var/log/php-fpm/目录下),日志中可能有更详细的错误信息,有助于进一步诊断问题。

通过上述步骤,您应该能够解决因不兼容配置导致的php-fpm启动失败问题。如果问题仍然未能解决,请考虑检查其他相关配置或寻求专业帮助。


参考知识库中的解决方案与说明,以上步骤旨在直接解决用户所遇问题,确保操作的准确性和有效性。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答