提问人:Bad Programmer 提问时间:6/3/2023 更新时间:6/4/2023 访问量:188
调用 Laravel 8 控制器中未定义的函数 simplexml_load_string()
Call to undefined function simplexml_load_string() in Laravel 8 Controller
问:
我有一个用 laravel 8 编写的 Web 应用程序,并托管在运行 Amazon Linux 2 的 EC2 实例上。应用程序拉取原子源。以前,它工作正常。但是,在一些作曲家依赖问题(我认为已解决)之后,原子提要不再起作用。现在,以下代码块返回对未定义函数 App\Http\Controllers\simplexml_load_string() 的调用错误:
$fileContents = file_get_contents($url_map[$feed]);
$fileContents = str_replace(array("\n", "\r", "\t"), '', $fileContents);
$fileContents = trim(str_replace('"', "'", $fileContents));
$fileContents = str_replace('<p>', "", $fileContents);
$fileContents = str_replace('</p>', "", $fileContents);
$simpleXml = simplexml_load_string($fileContents);
以下是我已经尝试解决该问题的方法:
我运行了以下命令来检查是否安装了simplexml扩展:.它什么也没返回,所以我的第一个动作是尝试使用 sudo yum install php-simplexml 安装扩展。php -m | grep simplexml
但是,收到以下响应,表明已安装该包:
Package php-xml-8.2.3-1.amzn2.x86_64 already installed and latest version
Nothing to do
我的下一步是打开我的 /etc/php.ini 文件并查找注释掉的 .但是,它不在文件中。我什至尝试添加它并重新启动 Apache,但没有运气。extension=php_simplexml.dll
我的想法快用完了。有没有人对解决这个问题有任何建议或见解?
答:
以下是我设法解决这种情况的方法:
由于我使用的是 Amazon Linux extras,我认为我正在摇摆的 simpleXML 版本可能卡顿了。我之所以做出这个假设,是因为我还注意到我在正确安装 php-json 包时遇到了问题。当我尝试安装它时,我看到它列在“php8.1”主题下,但对于我当前的版本(php8.2)却没有。
我删除了该软件包并重新安装了 PHP,然后重新安装了我需要的每个软件包。低,看哪,它现在似乎起作用了。
sudo yum 删除 php-json sudo 百胜餐饮集团安装 php php-common sudo 百胜餐饮集团安装 php php-cgi ....{cli、fpm、mysqlnd、pdo、mbstring、pear、xml、json、bcmath、curl}
我确实更新了php.ini文件以包含.extension=php_simplexml.dll
之后,我重新启动了 Apache 和 PHP FastCGI 进程管理器。
现在 atom 提要正在正确加载,我正在对应用程序进行回归测试,看看我是否需要安装任何其他包,或者是否因此而损坏了其他东西。但是,嘿,simplexml_load_string()现在有效,所以试探性获胜?
评论