You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地PHP测试服务器遇strpos(): Empty needle警告致网站崩溃求助

解决PHP Warning: strpos(): Empty needle错误

错误原因

这个警告的核心是strpos()函数的第二个参数(搜索目标,即needle)为空字符串。看你提供的代码,问题出在strpos($action, $CI->config->base_url())这部分——$CI->config->base_url()返回了空值,导致调用strpos时传入了空的搜索目标,触发警告甚至程序崩溃。

修复步骤

  • 检查CodeIgniter的base_url配置
    打开application/config/config.php,确认$config['base_url']已正确设置,本地测试示例:

    $config['base_url'] = 'http://localhost/your-project/';
    

    不要留空,填写你的项目实际访问路径。

  • 在代码中添加空值校验
    即使配置正确,也可以提前判断搜索目标是否非空,避免意外报错。修改代码如下:

    $base_url = $CI->config->item('base_url');
    $is_action_in_base_url = !empty($base_url) ? (strpos($action, $base_url) !== FALSE) : FALSE;
    $is_get_method = (strpos($form, 'method="get"') !== FALSE);
    
    if ($CI->config->item('csrf_protection') === TRUE AND !($is_action_in_base_url OR $is_get_method)) {
        // 你的原有业务逻辑
    }
    

    先判断$base_url是否为空,为空时直接返回FALSE,避免调用strpos时传入空参数。

  • 临时屏蔽警告(可选)
    本地测试时若想快速恢复运行,可在项目入口index.php中调整错误级别:

    error_reporting(E_ALL & ~E_WARNING);
    

    注意这只是临时方案,优先修复base_url配置的根本问题。

内容的提问来源于stack exchange,提问作者phperson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 06:18:14