【发布时间】:2018-05-13 12:12:13
【问题描述】:
我有一个在 php 7 上运行的子域文件夹。在全球范围内,我的 php 版本实际上是 5.6。当我运行我的项目时,我得到一个 500 内部错误。检查我的error_log,我看到了这个错误
致命错误:在第 358 行的 /home/invoice/vendor/symfony/polyfill-mbstring/Mbstring.php 中调用未定义函数 Symfony\Polyfill\Mbstring\iconv_strpos()
我尝试在我的子文件夹(在 php 7 上运行的子域下)安装此命令 composer require symfony/polyfill-icon,但这是终端中的结果
Warning: Ambiguous class resolution, "App\Http\Controllers\Auth\RegisterController" was found in both "/home/laravel/public_html/myproject/app/Http/Controllers/mNotify/Auth/RegisterController.php" and "/home/laravel/public_html/myproject/app/Http/Controllers/Auth/RegisterController.php", the first will be used.
> Illuminate\Foundation\ComposerScripts::postAutoloadDump
Parse error: syntax error, unexpected '?' in /home/laravel/public_html/myproject/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php on line 233
当我在子域下的子文件夹中查看vendor file 时,
Symfony\Polyfill\Mbstring\iconv 安装在那里,但是当我使用 php --ir iconv 从终端进行测试时,它得到 Extension iconv is not present。
发生了什么?
【问题讨论】:
-
您的 PHP 缺少
iconv扩展名。修复它首先取决于您的 PHP 是如何安装的。 -
@ceejayoz 但我认为我可以使用此命令修复
composer require symfony/polyfill-icon -
至于你的解析错误,那是因为你在 PHP 5 中运行 PHP 7 代码。(第 233 行说 ...
$arguments[1] ?? null,??不在 PHP -
@cHao,是的,这就是为什么我在子域中将 php 版本更新为 7,但后来我不知道为什么它仍然出现该错误。无论如何,Composer 都是全局安装的。难道是因为这样,composer使用的是php 5(这是全球版本)
-
@LearnLaravel:可能是。如果您只是说
composer do something,它将在shebang 行中列出的解释器下运行。你可以改成name_of_php7 $(which composer) do something。