本系列文的環境狀態,可點擊此連結後花園環境參考
今日文章會跟昨日的文末有相關,這次主要是解決此問題跟稍微介紹發生的原因。
輸入 php artisan tinker
指令後,可進入運作畫面,但再另外輸入其他指令後,就自行跳出,也未執行輸入指令的動作,看倌是否也遇到這樣的情形呢?
在 Terminal 輸入指令
$ cd ~/.config/psysh // 到 psysh 資料夾底下
$ vim config.php // 新增 config.php 檔案並編輯
如果不會用 vim 編輯器,可在 ~/.config/psysh 資料夾底下,直接新增 config.php 檔案,並放入下列程式碼後儲存。
<?php
return [
'usePcntl' => false,
];
接著,重新執行 $ php artisan tinker
,並輸入要運行的指令,應該就可以正常了運作。
<?php
if (preg_match('/./', 'a')) echo "pre-fork works\n";
$pid = pcntl_fork();
if ($pid == -1) {
die('fail');
} elseif ($pid) {
if (preg_match('/./', 'a')) echo "parent works\n";
pcntl_wait($status);
if (pcntl_wifsignaled($status) && pcntl_wtermsig($status) == SIGSEGV) {
die('child process segfaulted');
}
} else {
if (preg_match('/./', 'a')) echo "child works\n";
}
在 PHP 7.3 版以前
pre-fork works
parent works
child works
在 PHP 7.3 版後
pre-fork works
parent works
child process segfaulted
參考連結:
❁ Not working after upgrading to PHP 7.3
❁ PHP Artisan Tinker crashing from any command