php脚本突然停止工作-从哪里开始查找


php scripts that suddently stops working - where to start looking?

如果有人不想阅读整个解释,你可以跳到我有实际问题的最后两段

所以我有一堆用CakePHP制作的网站。在其中一个页面中(这对所有网站都是一样的),我加载一个XML文件并处理其内容(使用XML助手)。这已经有相当长的一段时间了。现在,突然间,它在任何网站上都不起作用了(代码也没有一点变化),它给出了一个"打开文件时出错"。

与此同时,这些网站的另一个脚本(与前一个无关,它是普通的PHP,在cakephp"区域"之外)也停止了工作。在这种情况下,它是一个脚本,创建与视频托管提供商(Fliqz)的连接,并在给定视频id的情况下检索视频的URL。突然,它抛出了一个类似"会话未创建"的错误(该脚本与Fliqz的服务器创建某种会话以获取URL)。

我知道,这听起来很奇怪。在检查代码是否正确后,我做的第一件事是调用1&1(托管提供商),并询问他们是否对服务器进行了任何更改。他们说,他们几个月前改成了PHP5(我知道,在那次更改后一切都很好),但他们没有改变其他任何事情。

我的问题是,我能做些什么来找出这些问题的原因吗?例如,我发现有人发帖说,他的主机限制了一些允许外部连接的功能。或者在另一篇文章中,我看到了一个关于这样做的建议:echo file_get_contents("http://google.com/"),我遇到了一个错误,这意味着某些设置不正确。我甚至试图在加载XMl文件的页面中使用simplexml_load_file(而不是XMl帮助程序),但没有成功,这又出现了一个错误…

我想知道,如果是PHP设置导致了这种情况,可能是哪一个,所以我可以查看它并再次调用1&1告诉他们需要改变什么(如果有什么需要改变的话)。否则,世界上怎么会有什么东西停止工作呢?

谢谢你的建议!非常感谢!

编辑:错误的详细解释

1.使用CakePHP的XML助手加载XML时出错

这是我使用的代码(过去工作得很好):

$completeurl = '/full/path/to/file/myfile.xml';
App::import('Xml'); 
$xml =& new XML($completeurl);
$this->list = Set::reverse($xml);

我没有收到任何错误或警告。如果我调试$xml,我得到的是:

Xml Object
(
[__parser] => 
[__file] => 
[__rawData] => 
[__header] => 
[__tags] => Array
    (
    )
[version] => 1.0
[encoding] => UTF-8
[name] => #document
[namespace] => 
[namespaces] => Array
    (
    )
[value] => 
[attributes] => Array
    (
    )
[children] => Array
    (
    )
[__parent] => 
)

如果我调试$this->list,我会得到一个空数组。在出现这个问题之前,我会得到一个包含XML文件所有信息的关联数组,该数组结构完美。哦,XML文件和以前一样,我已经重新验证了它,以防出现错误。

2.使用simplexml_load_file()加载XML文件时出错

这是我使用"常规"php(不使用任何CakePHP助手)尝试的代码:

$file = '/full/path/to/file/myfile.xml';
if(!$xml = simplexml_load_file($file))
exit('Failed to open '.$file);

以下是错误(警告):

Warning (2): simplexml_load_file() [function.simplexml-load-file]: URL file-access is disabled in the server configuration [APP/plugins/icd_discovery/webroot/videos.php, line 29]
Warning (2): simplexml_load_file(http://discovery.ingles100.com/icd_discovery/xml/videos_unidades.xml) [function.simplexml-load-file]: failed to open stream: no suitable wrapper could be found [APP/plugins/icd_discovery/webroot/videos.php, line 29]
Warning (2): simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "http://discovery.ingles100.com/icd_discovery/xml/videos_unidades.xml" [APP/plugins/icd_discovery/webroot/videos.php, line 29]

如果我为文件设置了一个相对路径,我只得到最后一个警告,但仍然没有加载它

**3。在Fliqz**中加载托管视频URL的脚本相关错误

包含此脚本的页面与之前的页面完全无关(这意味着那里的代码不会影响这里的代码)。我们使用以下脚本(由Fliqz提供)来请求我们在那里托管的视频的URL:

include_once '../fliqz/dlMetrics.php';
// initializing new session
$videoID = '123123123';
$applicationID = '456456456';
$uniqueID = null;
// create a new fliqzDownload Object
$metricsObj  = new dlMetrics();
// get new session, using Application ID from Account:
$sessionID = $metricsObj->newSession($applicationID,NULL,NULL,NULL,$uniqueID);
// show server time when new session was created:
$start = $metricsObj->getSessionStart();
// Get asset location (note: must use dashes in asset ID example: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
$video_URL = $metricsObj->initLoad($videoID);

通过这样做,我们可以在$video_URL变量中获得视频的URL。同样,这曾经非常有效。突然间,它没有了。

那么,所有这些东西停止工作是巧合吗?我认为某些地方发生了变化。不是密码,我是唯一一个接触它的人。PHP版本不久前发生了更改,一切都很正常。服务器里有什么东西?1&1说他们没有,或者至少是我交谈过的人没有。如果我必须回电话,我希望能够更好地指出我认为问题可能来自哪里,这就是为什么我需要你们的帮助!

再次感谢您的建议!

创建一个名为php.ini的文件,其中包含以下内容:

allow_url_fopen = ON

并将其放置在与这些脚本相同的文件夹中。