首页 > 编程技术 > php

解决:failed to open stream: No such file or directory in

发布时间:2016-11-25 17:38

本教程来给各位同学介绍failed to open stream: No such file or directory in解决办法,有需要了解的朋友可进入参考。

 

Warning: include_once(./include/main.inc.php) [function.include-once]: failed to open stream: failed to open stream: No such file or directory in

Fatal error: main(): Failed opening required './Config.php' (include_path='.;c:php4pear') in D:wwwrootCoreConfig.php on line 13


出现这个的问题是因为我们inlcude的路径不对了,只要我们把路径改对就可以了。

Fatal error: main(): Failed opening required './Config.php' (include_path='.;c:php4pear') in D:wwwrootCoreConfig.php on line 13

shopex主机问题描述

 

Warning:
require(/core/include_v5/adminCore.php) [function.require]: failed to open stream:
No such file or directory in D:wwwrootbeisososhopadminindex.php on line 13
Fatal error:
require() [function.require]:
Failed opening required "/core/include_v5/adminCore.php" (include_path=".;C:php5pear")


三、shopex主机解决方案

给D:和D:wwwroot 一个everyone可读权限,只在这两个位置加权限就可以了,不要附加到下一级目录!
命令如下:
cacls d: /e /g everyone:r
cacls d:wwwroot /e /g everyone:r

可能会有不少人碰到在php中如果是utf8编码我们导入文件时会出现空白行的问题,下面我来给各位同学介绍引用文件空白行的解决办法。

引用文件指的是include、require_once引用其它文件引起的空白行

这其实是你用记事本编辑UTF-8文件以后,虽然你还是保存为UTF-8格式,但系统会自动给文件加两个bom标记,但是ie只能忽略一个,另一个就是空白行了。
解决办法就是:

不要用记事本去编辑UTF-8文件,要用其它工具,比Dreamw、EmEditor 、Visual Studio 2008等编辑工具编辑UTF-8文件后保存。

我的两个站用记事本编辑后顶部就有空白行,起初以为是css设置问题,结果是bom标记引起的。

还有一种办法,如果你是大量文件都这样我们可使用一个php函数来搞定

把以下代码复制到一个PHP文件里面,然后放在需要清除BOM头的目录一下运行,就可以批量把PHP空白的首行清除掉,太给力了。

 代码如下 复制代码

 
<?php  
if (isset($_GET['dir'])){ //设置文件目录  
$basedir=$_GET['dir'];  
}else{  
$basedir = '.';  
}  
$auto = 1;  
checkdir($basedir);  
function checkdir($basedir){  
if ($dh = opendir($basedir)) {  
  while (($file = readdir($dh)) !== false) {  
   if ($file != '.' && $file != '..'){  
    if (!is_dir($basedir."/".$file)) {  
     echo "filename: $basedir/$file ".checkBOM("$basedir/$file")." <br>";  
    }else{  
     $dirname = $basedir."/".$file;  
     checkdir($dirname);  
    }  
   }  
  }  
closedir($dh);  
}  
}  
function checkBOM ($filename) {  
global $auto;  
$contents = file_get_contents($filename);  
$charset[1] = substr($contents, 0, 1);  
$charset[2] = substr($contents, 1, 1);  
$charset[3] = substr($contents, 2, 1);  
if (ord($charset[1]) == 239 && ord($charset[2]) == 187 && ord($charset[3]) == 191) {  
  if ($auto == 1) {  
   $rest = substr($contents, 3);  
   rewrite ($filename, $rest);  
   return ("<font color=red>BOM found, automatically removed.</font>");  
  } else {  
   return ("<font color=red>BOM found.</font>");  
  }  
}  
else return ("BOM Not Found.");  
}  
function rewrite ($filename, $data) {  
$filenum = fopen($filename, "w");  
flock($filenum, LOCK_EX);  
fwrite($filenum, $data);  
fclose($filenum);  
}  
?>

最近遇到一些PhpStorm编程的问题: 在使用Zen Coding插件时,PHPStorm不像Notepad++那样随便使用。PHPStorm只有在编辑识别为HTML的文件时才可以使用Zend Coding。 在PHPStorm编程时,关于数据库操作的SQL语句会有相应的提示。
于是搜索PhpStorm在编写PHP代码,能否切换某一块代码片段到其他编程语言。
在很多项目中,我们经常在编程的时候想进行切换编程语言,通常我们需要在代码的字符串中嵌入一块不同的编程语言。例如:在PHP代码中嵌入一个HTML片段,如果你也遇到类似的情况。
 
$htmlFragment 变量为一段HTML代码,其中有部分PHP变量和转义字符串。
而遇到这种情况,就不能很好的使用HTML代码提示,比如<p></p> 不能直接通过自动闭合等,一个一个的敲打键盘是一个非常苦力的事。
PhpStorm编程语言切换
PhpStorm能够认识到这些情况,它为我们提供了一个功能全面的HTML编辑器来编辑现有的字符串:
PhpStorm编程语言切换演示
我们也可以创建一个字符串,并使用语言切换(Alt+Enter)手动指定字符串到有另外的的语言:
PHPStorm 使用语言切换(Alt+Enter)手动指定字符串到有另外的的语言
这是一个非常棒的小功能,完全提高了编程效率。而且这个功能适用于其他所有语言。

 

这个功能完全方便了我在编辑PHP代码时使用Zen Coding

 

昨天我在做一个简单采集功能时我直接使用了file_get_contents函数,但是采集有些网站没问题,采集有些网筹码了,后来分析出现乱码是服务器开启了gzip压缩功能哦。

我采集的一个页面,如下gzip

知道原因了我们就好办了,先百度了一下得出是可以改用curl操作。

curl解决

 代码如下 复制代码

function curl_get($url, $gzip=false){
        $curl = curl_init($url);
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
        if($gzip) curl_setopt($curl, CURLOPT_ENCODING, "gzip"); // 关键在这里
        $content = curl_exec($curl);
        curl_close($curl);
        return $content;
}

采用gzip编码格式

file_get_contents解决:

 代码如下 复制代码

file_get_contents("compress.zlib://".$url);

无论页面是否经过gzip压缩,上述代码都可以正常工作!

注意:CURL是需要打开的哦。

curl安装:

xp下面的安装

:修改php.ini文件的设置,找到

 代码如下 复制代码
php_curl.dll

//取消下在的注释extension=php_curl.dll

linux下面安装:

 代码如下 复制代码

# wget http://curl.haxx.se/download/curl-7.17.1.tar.gz

# tar zxvf curl-7.17.1.tar.gz  //解压

#cd curl-7.17.1

# ./configure –prefix=/usr/local/curl

# make

# make install

这是安装php之前安装的方法.

本文章来给大家介绍一篇PHP调用session_start后页面始终加载的问题研究,有需要的朋友可参考。
一个PHP页面的执行时间比较长(15秒左右),而只要这个页面没有执行完毕,其他的页面访问都是长时间加载状态,只有那个页面执行完毕了,剩下的页面才能打开。
这是什么情况呢,经过查看,两个页面都设计到了SESSION操作,示例代码如下:
页面一:
点击查看原图
页面二:
 点击查看原图
访问页面一地时候同时访问页面二,你会发现页面二会一直保持加载状态直到页面一执行完毕。
问题的原因是什么呢?
答案是PHP的SESSION机制在作怪,PHP只会在页面代码执行完毕之后才会把SESSION数据写入到文件中,页面不执行完毕,对应的SESSION文件一直都保存着锁定状态,而其他的页面要访问这个SESSION文件就只能保持等待状态,这就是为什么页面二需要等待页面一执行完毕之后才执行。
 
知道原因后,我们应该如何解决这个问题呢?
答案很简单,PHP已经在内核中提供了相关接口:函数 session_write_close
函数官方文档的描述如下:
Session data is usually stored after your script terminated without the need to call session_write_close(), but as session data is locked to prevent concurrent writes only one script may operate on a session at any time. When using framesets together with sessions you will experience the frames loading one by one due to this locking. You can reduce the time needed to load all the frames by ending the session as soon as all changes to session variables are done.
Session数据通常在你的脚本结束后自动保存而不需要调用session_write_close函数。但是session为了避免数据被同时写入将文件锁定住以保证每次只有一个脚本可以访问文件。当你在用框架页面同时访问SESSION的时候将会遇到因为文件锁定而出现的框架持续加载情况。你可以在处理完SESSION变量后立即使用这个函数减少多个框架的加载时间。
 
像前面的问题,我们可以直接在操作完SESSION数据后调用session_write_close函数立即写入session数据,这样就不会影响到其他页面的正常运行。代码如下:
点击查看原图
 
标签:[!--infotagslink--]

您可能感兴趣的文章: