这是我正在使用的代码:
<?php
$changelog="https://raw.github.com/neurobin/oraji/release/ChangeLog";
$filec1=@file_get_contents($changelog);
if($filec1===false) {$filec1="something";}
echo $filec1
?>
它打印 Not Found 而不是某些。但是当我向if语句中添加另一个条件时:
if($filec1===false||$filec1=="Not Found") {$filec1="something";}
然后按预期工作。
这里出了什么问题?
PHP版本是5.4。 php -v
输出:
PHP 5.4.45 (cli) (built: Oct 29 2015 09:16:10)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies
with the ionCube PHP Loader v4.7.5, Copyright (c) 2002-2014, by ionCube Ltd., and
with Zend Guard Loader v3.3, Copyright (c) 1998-2013, by Zend Technologies
with Suhosin v0.9.36, Copyright (c) 2007-2014, by SektionEins GmbH
N.B:我在远程服务器上这样做。
<小时/> 修改
无论如何,我注意到(在浏览器中找到该URL)Github正在发送文字“未找到”#39;作为该不存在的URL的内容(我不知道为什么)。但是我如何解决它(不使用文字字符串作为条件)?
这就是我最终做的事情:
根据this answer,我正在检查HTTP标头响应,并将200
定位为成功代码,否则失败(以及真/假检查)。
<?php
function fileGetContents($file){
$filec1=@file_get_contents($file);
if($filec1===false || !strpos($http_response_header[0], "200"))
{$filec1="something";}
return $filec1;
}
$changelog="https://raw.github.com/neurobin/oraji/release/ChangeLog";
$filec1=fileGetContents($changelog);
echo $filec1;
?>
注意:
如果使用301/302重定向,则无法正常工作。例如,如果上面的链接确实存在,它将无法工作,即它会返回“某些东西”。而不是重定向页面中的实际内容。因为raw.github.com
被重定向到raw.githubusercontent.com
此解决方案仅在我使用没有重定向的实际URL时才有效。 所以这仍然不是一个好的解决方案。
答案 0 :(得分:1)
tags.findOrCreate( {
where: { tagName: tag }
})
.then(function(tagData){
console.log(tagData.toJSON());
})
答案 1 :(得分:1)
将file_get_contents
置于条件中。
$changelog="https://raw.github.com/neurobin/oraji/release/ChangeLog";
if($filec1 = @file_get_contents($changelog)) {
echo 'Got it';
} else {
echo 'NOOOOOoooo!';
}
另请注意,如果您取消@
,则会收到错误。
答案 2 :(得分:0)
这是按预期工作的:
逻辑很简单:
是否重定向,如果网址有效,
200 OK
数组中的某个地方会有$http_response_header
。
因此,我只检查数组的所有元素以查找200 OK
消息。
<?php
function is200OK($arr){
foreach($arr as $str){
if(strpos($str, " 200 OK")) {return true;}
}
return false;
}
function fileGetContents($file){
$filec1=@file_get_contents($file);
if($filec1===false || !is200OK($http_response_header)) {$filec1="something";}
//print_r($http_response_header);
return $filec1;
}
$changelog="https://raw.github.com/neurobin/oraji/release/ChangeLog";
$filec1=fileGetContents($changelog);
echo $filec1;
?>
答案 3 :(得分:0)
好吧,如果您访问该链接,您将看到您收到该错误。返回json的链接,即使它们在web中也看起来像一个数组。