本地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
相关产品推荐
相关产品推荐

