我正在运行PHP脚本,并继续收到如下错误:
注意:未定义的变量:第10行的C:\ wamp\www\mypath\index.php中的my_variable_name
注意:第11行的未定义索引:my_index C:\ wamp\www\mypath\index.php
第10行和第11行看起来像这样:
echo "My variable value is: " . $my_variable_name;
echo "My index value is: " . $my_array["my_index"];
Run Code Online (Sandbox Code Playgroud)
这些错误消息的含义是什么?
他们为什么突然出现?我曾经使用这个脚本多年,我从来没有遇到任何问题.
我该如何解决?
这是一个一般参考问题,供人们链接到重复,而不是一遍又一遍地解释这个问题.我觉得这是必要的,因为关于这个问题的大多数现实世界的答案都非常具体.
相关元讨论:
这是关于编程PHP时可能遇到的警告,错误和通知的一些答案,并且不知道如何修复.这也是社区Wiki,因此邀请每个人参与添加和维护此列表.
Stack Overflow上经常弹出诸如"已发送标头"或"调用非对象成员"之类的问题.这些问题的根本原因总是一样的.因此,这些问题的答案通常会重复,然后显示OP在他/她的特定情况下要改变哪一行.这些答案不会为网站添加任何价值,因为它们仅适用于OP的特定代码.具有相同错误的其他用户不能轻易地从中读取解决方案,因为它们过于本地化.这很难过,因为一旦你理解了根本原因,修复错误是微不足道的.因此,该列表试图以一般的方式解释解决方案.
如果您的问题已被标记为重复,请在下面找到您的错误消息并将修复程序应用于您的代码.答案通常包含进一步调查的链接,以防单独的一般答案不清楚.
如果您想贡献,请添加您的"收藏"错误消息,警告或通知,每个答案一个,简短说明它意味着什么(即使它只是突出显示其手册页的术语),可能的解决方案或调试方法和现有问答的清单.此外,随时改善任何现有的答案.
另外,请参阅
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'From: yoursite.com';
$to = 'contact@yoursite.com';
$subject = 'Customer Inquiry';
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
if ($_POST['submit']) {
if (mail ($to, $subject, $body, $from)) {
echo '<p>Your message has been sent!</p>';
} else {
echo '<p>Something went wrong, go back and try again!</p>';
}
}
?>
Run Code Online (Sandbox Code Playgroud)
我试过创建一个简单的邮件表单.表单本身在我的index.html页面上,但提交单独的"谢谢你的提交"页面thankyou.php,其中嵌入了上面的PHP代码.代码提交完美,但从不发送电子邮件.请帮忙.
这是我的代码:
function phpwtf(string $s) {
echo "$s\n";
}
phpwtf("Type hinting is da bomb");
Run Code Online (Sandbox Code Playgroud)
导致此错误:
可捕获的致命错误:传递给phpwtf()的参数1必须是字符串的实例,给出字符串
看到PHP在同一口气中识别并拒绝所需的类型,这不仅仅是一点Orwellian.该死的有五盏灯.
PHP中字符串的类型提示相当于什么?奖励考虑答案,准确解释这里发生了什么.
我想在发送之前看看请求中的帖子字段是什么.(用于调试目的).
我正在使用的PHP库(类)已经完成(不是由我),所以我试图理解它.
据我所知,它用于curl_setopt()设置不同的选项,如标题等,然后curl_exec()用于发送请求.
关于如何查看发送哪些帖子字段的想法?
我有一个问题,将对象stdClass转换为数组.我试过这样的方式:
return (array) $booking;
Run Code Online (Sandbox Code Playgroud)
要么
return (array) json_decode($booking,true);
Run Code Online (Sandbox Code Playgroud)
要么
return (array) json_decode($booking);
Run Code Online (Sandbox Code Playgroud)
在我尝试将其转换为空之后,演员阵容之前的数组已满了一条记录.如何在不删除行的情况下转换/转换它?
演员阵容前:
array(1) { [0]=> object(stdClass)#23 (36) { ["id"]=> string(1) "2" ["name"]=> string(0) "" ["code"]=> string(5) "56/13" } }
Run Code Online (Sandbox Code Playgroud)
如果我尝试制作一个,则在施放后为空NULL var_dump($booking);
我也试过这个函数但总是空的:
public function objectToArray($d) {
if (is_object($d)) {
// Gets the properties of the given object
// with get_object_vars function
$d = get_object_vars($d);
}
if (is_array($d)) {
/*
* Return array converted to object
* Using __FUNCTION__ (Magic constant)
* for recursive call
*/
return array_map(__FUNCTION__, $d); …Run Code Online (Sandbox Code Playgroud) 这从未发生过.通常它会显示错误,但现在它只给我一个500内部服务器错误.当然,之前,当它显示错误时,它是不同的服务器.现在我在一个新的服务器上(我有完全的root,所以如果我需要在php.ini中的某个地方配置它,我可以.)或者也许是Apache的东西?
我一直在忍受它只是将文件传输到我的其他服务器并在那里运行以找到错误,但这变得太乏味了.有没有办法来解决这个问题?
现在我开始回到PHP,我开始记得为什么我放弃了它.目前我盘子里最烦人的事情就是我所说的"PHP的死亡白屏".当PHP由于语法或其他原因而出现致命错误时,似乎总是在没有实际向浏览器发送任何内容的情况下死亡.我已将以下内容添加到我的中.htaccess,并且它似乎在大多数时间都有效,但在这些情况下它不起作用.
php_value display_errors 1
php_value display_startup_errors 1
php_value error_reporting 2147483647 # E_ALL
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?目前我觉得我需要刷新我编写的每几行代码,以免我犯了一个错误,并且必须搜索许多页面,试图找出我犯的一个小错误......
编辑:例如,给出以下两行代码:
$foo = array(':language' => $languageId;
$foo = array(':language' => $languageId);
Run Code Online (Sandbox Code Playgroud)
第一个将显示死亡的白色屏幕(即,什么都没有打印到浏览器),而第二个将愉快地执行.
我最近将我的网站从共享服务器移动到我自己的服务器.现在,当我遇到PHP错误时,我收到500内部服务器错误.在我的老东道主,我会得到类似"致命错误:期待;"的内容.我如何启用它?
我把它作为xml:
<root xmlns:event="http://www.webex.com/schemas/2002/06/service/event">
<event:event>
<event:sessionKey></event:sessionKey>
<event:sessionName>Learn QB in Minutes</event:sessionName>
<event:sessionType>9</event:sessionType>
<event:hostWebExID></event:hostWebExID>
<event:startDate>02/12/2009</event:startDate>
<event:endDate>02/12/2009</event:endDate>
<event:timeZoneID>11</event:timeZoneID>
<event:duration>30</event:duration>
<event:description></event:description>
<event:status>NOT_INPROGRESS</event:status>
<event:panelists></event:panelists>
<event:listStatus>PUBLIC</event:listStatus>
</event:event>
...
</root>
Run Code Online (Sandbox Code Playgroud)
我如何遍历所有事件:事件节点和显示,例如,所有事件:SessionKey?
这不起作用:
$xml = new SimpleXMLElement($r);
$xml->registerXPathNamespace('e', 'http://www.webex.com/schemas/2002/06/service/event');
foreach($xml->xpath('//e:event') as $event) {
var_export($event->xpath('//e:sessionKey'));
}
Run Code Online (Sandbox Code Playgroud)