Laravel migration PHP Storm遇到的问题:failed to open stream: Operation now in progress
关于在使用PHP Storm和Laravel时遇到的问题:failed to open stream: Operation now in progress
·
先整两句:
作为一个刚起步的程序员,博客这种东西还是有必要写的,至少总要有个地方把自己遇到的问题和获得的经验等写出来,一方面是给自己一个整理的机会,有整理有总结才有提高,另一方面,毕竟从网络上的其他人的文章中获取了太多,是时候该自己也加入其中了。
说正事儿。
首先讲讲遇到的问题。
这错误,连个错误代码都没有,连个错误位置都没有,光写个include函数错了,不能打开文件流(很明显那是我网站的根目录),你这可让我怎么找错在哪儿……
好吧,后来我才意识到,要使用Log日志文件这种东西。
不!
行行行,你们都牛,我自己来找问题。
看了两三遍,才终于耐着性子一行一行看完。这个错误报告中最有价值的部分,就是指出了问题出在"2016_07_29_2313..."这个migration上。我想起来,这个文件对应的表因为有一个外键要加,所以我修改了一下时间前缀,把它顺序调后了,肯定是这儿搞起来的事儿。
要是是文件名引起的错误,那估计就是include者要么引用了一个不存在的文件,要么是根本不知道有这个文件存在。如果是引用了一个不存在的文件,那么错误肯定是网上大部分人遇到的“failed to open stream: No such file or directory in”,所以,这一定是include者根本不知道有这个文件存在。对,肯定是这样!
2. log是个好东西,以后要注意用它。
3. 耐心,耐心很重要,log文件又不是小说,不耐心点仔细看看三遍一样不知道出了什么问题。
4. 得过且过不是个好东西,问题不解决它又不会自己走,要敢于跟它刚,正面跟它刚!
5. 编程还是很有意思的,一套过程下来其实没多大事儿,但说得我热血沸腾呢怎搞的?
作为一个刚起步的程序员,博客这种东西还是有必要写的,至少总要有个地方把自己遇到的问题和获得的经验等写出来,一方面是给自己一个整理的机会,有整理有总结才有提高,另一方面,毕竟从网络上的其他人的文章中获取了太多,是时候该自己也加入其中了。
说正事儿。
问题
首先讲讲遇到的问题。
开发环境:使用Laravel框架进行网站开发,运行环境是XAMPP 5.6.23,操作系统Fedora 24,IDE是PHP Storm。
[ErrorException]
include(/opt/lampp/htdocs/M J Website): failed to open stream: Operation now in progress
图中的“mg”命令是我用alias作的别名,完整命令是"php artisan migrate:refresh",就是将数据表全部删除然后重建。
然后我就懵了……这错误,连个错误代码都没有,连个错误位置都没有,光写个include函数错了,不能打开文件流(很明显那是我网站的根目录),你这可让我怎么找错在哪儿……
好吧,后来我才意识到,要使用Log日志文件这种东西。
在意识到之前,我又进行了几次migrate:refresh操作,结果发现如果先把数据库中的表全部删除,这个命令就可以执行成功。然而,一旦再进行一次,就又会遇到那烦死人的一片血红。
不!
过程
我开始在网上一顿大搜,然而百度谷歌都找了,并没有,可能样本不够,但是足够让我怀疑是不是自己太孬,为什么大家都没碰到这错误就你有。行行行,你们都牛,我自己来找问题。
我把Laravel.log打开,我了去,看上去好像不是很有趣的样子……
[2016-07-29 14:14:38] local.ERROR: exception 'ErrorException' with message 'include(/opt/lampp/htdocs/M J Website): failed to open stream: Operation now in progress' in /opt/lampp/htdocs/M J Website/vendor/composer/ClassLoader.php:412
Stack trace:
#0 /opt/lampp/htdocs/M J Website/vendor/composer/ClassLoader.php(412): Illuminate\Foundation\Bootstrap\HandleExceptions->handleError(2, 'include(/opt/la...', '/opt/lampp/htdo...', 412, Array)
#1 /opt/lampp/htdocs/M J Website/vendor/composer/ClassLoader.php(412): Composer\Autoload\includeFile()
#2 /opt/lampp/htdocs/M J Website/vendor/composer/ClassLoader.php(301): Composer\Autoload\includeFile('/opt/lampp/htdo...')
#3 [internal function]: Composer\Autoload\ClassLoader->loadClass('CreateC Tabl...')
#4 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(335): spl_autoload_call('CreateC Tabl...')
#5 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(227): Illuminate\Database\Migrations\Migrator->resolve('2016_07_29_2313...')
#6 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Database/Migrations/Migrator.php(206): Illuminate\Database\Migrations\Migrator->runDown(Object(stdClass), false)
#7 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/ResetCommand.php(69): Illuminate\Database\Migrations\Migrator->reset(false)
#8 [internal function]: Illuminate\Database\Console\Migrations\ResetCommand->fire()
#9 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Container/Container.php(507): call_user_func_array(Array, Array)
#10 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Console/Command.php(169): Illuminate\Container\Container->call(Array)
#11 /opt/lampp/htdocs/M J Website/vendor/symfony/console/Command/Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArrayInput), Object(Illuminate\Console\OutputStyle))
#12 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Console/Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Illuminate\Console\OutputStyle))
#13 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Console/Command.php(185): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArrayInput), Object(Illuminate\Console\OutputStyle))
#14 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Database/Console/Migrations/RefreshCommand.php(46): Illuminate\Console\Command->call('migrate:reset', Array)
#15 [internal function]: Illuminate\Database\Console\Migrations\RefreshCommand->fire()
#16 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Container/Container.php(507): call_user_func_array(Array, Array)
#17 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Console/Command.php(169): Illuminate\Container\Container->call(Array)
#18 /opt/lampp/htdocs/M J Website/vendor/symfony/console/Command/Command.php(256): Illuminate\Console\Command->execute(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#19 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Console/Command.php(155): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#20 /opt/lampp/htdocs/M J Website/vendor/symfony/console/Application.php(791): Illuminate\Console\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#21 /opt/lampp/htdocs/M J Website/vendor/symfony/console/Application.php(186): Symfony\Component\Console\Application->doRunCommand(Object(Illuminate\Database\Console\Migrations\RefreshCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#22 /opt/lampp/htdocs/M J Website/vendor/symfony/console/Application.php(117): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#23 /opt/lampp/htdocs/M J Website/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(107): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#24 /opt/lampp/htdocs/M J Website/artisan(36): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#25 {main}
看了两三遍,才终于耐着性子一行一行看完。这个错误报告中最有价值的部分,就是指出了问题出在"2016_07_29_2313..."这个migration上。我想起来,这个文件对应的表因为有一个外键要加,所以我修改了一下时间前缀,把它顺序调后了,肯定是这儿搞起来的事儿。
要是是文件名引起的错误,那估计就是include者要么引用了一个不存在的文件,要么是根本不知道有这个文件存在。如果是引用了一个不存在的文件,那么错误肯定是网上大部分人遇到的“failed to open stream: No such file or directory in”,所以,这一定是include者根本不知道有这个文件存在。对,肯定是这样!
于是我就用PHP Storm搜文件名,搜了半天,终于发现了点问题。其他的migration文件,全都在两个地方被引用,而它,"2016_07_29_2313..."这个,只有一个地方被引用。
就——是——你!
结果
原来,是改名的时候,PHP Storm自动帮我把vendor/composer/autoload_static.php后面的路径全部给删掉了。加回去就好了。
总结
1. 这个问题其实我以前遇到过,以前还解决了,然后今天遇到还是完全茫然。这就是不总结的后果。所以,今天开个博在这儿,自己总结,也方便他人。2. log是个好东西,以后要注意用它。
3. 耐心,耐心很重要,log文件又不是小说,不耐心点仔细看看三遍一样不知道出了什么问题。
4. 得过且过不是个好东西,问题不解决它又不会自己走,要敢于跟它刚,正面跟它刚!
5. 编程还是很有意思的,一套过程下来其实没多大事儿,但说得我热血沸腾呢怎搞的?

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)