我是 PHP 新手,尝试使用 localhost 打开 CodeIgniter 4 欢迎页面(我没有任何像 XAMPP 这样的服务器程序,因为它是公司计算机,并且 PHP 可以与其内置服务器配合良好。)
当我尝试在终端上运行命令:
php spark serve
时,它会给出如下错误:
Uncaught Error: Call to undefined function CodeIgniter\CLI\mb_strpos() in C:\Users\50290536\Desktop\php-test\system\CLI\CLI.php:776
我在
php.ini
文件中启用了必要的扩展,并且该文件: php_mbstring.dll
在目录 php/ext
中可用。
我还尝试运行命令:
php spark
来查看spark
是否正常工作,但在这种情况下,我收到以下错误:
The framework needs the following extension(s) installed and loaded: curl, intl, mbstring at SYSTEMPATH\Codeigniter.php:224
所有这些扩展均在
php.ini
文件中启用,并且它们各自的 .dll
文件可在目录 php/ext
中找到。
PHP版本:
v8.2
CodeIgniter 4框架版本:
v4.2.10
运行命令后当前启用的 PHP 模块:
php -m
bcmath
calendar
Core
ctype
date
dom
filter
hash
iconv
json
libxml
mysqlnd
pcre
PDO
Phar
random
readline
Reflection
session
SimpleXML
SPL
standard
tokenizer
xml
xmlreader
xmlwriter
zlib
在我的例子中,php.ini中的extension_dir指令是相对路径。如果将其更改为绝对值,它应该可以工作。例如:
extension_dir = "c:\php\ext"
或者,您可以尝试使用以下值:“./ext”或“.xt”或“ext”。 确保取消注释该指令。 (把开头的分号删掉即可)
这是某些机器/版本上的已知错误。
正如您所说,您的操作系统是Windows,您可以检查是否可以解决问题。我认为如果
php -m
命令列出了 mbstring 扩展名,那么它将解决您原来的问题,并且 CodeIgniter Spark 将正常工作。
确保编辑正确的 php 配置文件。您可以使用
which php
或 where php
命令找到 php 的位置。
是的,您只需将 php.ini-development 移动到 php.ini 即可,它应该可以工作。
来源:https://stackoverflow.com/a/63489141/7742526和https://bugs.php.net/bug.php?id=74866