这是关于编程PHP时可能遇到的警告,错误和通知的一些答案,并且不知道如何修复.这也是社区Wiki,因此邀请每个人参与添加和维护此列表.
Stack Overflow上经常弹出诸如"已发送标头"或"调用非对象成员"之类的问题.这些问题的根本原因总是一样的.因此,这些问题的答案通常会重复,然后显示OP在他/她的特定情况下要改变哪一行.这些答案不会为网站添加任何价值,因为它们仅适用于OP的特定代码.具有相同错误的其他用户不能轻易地从中读取解决方案,因为它们过于本地化.这很难过,因为一旦你理解了根本原因,修复错误是微不足道的.因此,该列表试图以一般的方式解释解决方案.
如果您的问题已被标记为重复,请在下面找到您的错误消息并将修复程序应用于您的代码.答案通常包含进一步调查的链接,以防单独的一般答案不清楚.
如果您想贡献,请添加您的"收藏"错误消息,警告或通知,每个答案一个,简短说明它意味着什么(即使它只是突出显示其手册页的术语),可能的解决方案或调试方法和现有问答的清单.此外,随时改善任何现有的答案.
另外,请参阅
我有以下结构
otsg
> class
> authentication.php
> database.php
> user.php
> include
> config.inc.php
> encryption.php
> include.php
> session.php
> index.php
> registration.php
Run Code Online (Sandbox Code Playgroud)
include.php文件具有以下内容
ini_set('display_errors', 1);
error_reporting(E_ALL);
ini_set('include_path',ini_get('include_path').':/Applications/MAMP/htdocs/otsg/:');
require_once 'config.inc.php';
require_once '../class/database.php';
require_once '../class/user.php';
require_once 'encryption.php';
require_once 'session.php';
require_once '../class/authentication.php';
Run Code Online (Sandbox Code Playgroud)
在我包含的index.php页面中
require_once 'include/include.php';
Run Code Online (Sandbox Code Playgroud)
当我打开页面index.php时,我收到以下警告和致命错误.我不明白是什么导致了这个错误.当我给出绝对路径时它起作用.但绝对的道路并不是我认为的好主意.
Warning: require_once(../class/database.php) [function.require-once]: failed to open stream: No such file or directory in /Applications/MAMP/htdocs/otsg/include/include.php on line 9
Fatal error: require_once() [function.require]: Failed opening required '../class/database.php' (include_path='.:/Applications/MAMP/bin/php5.3/lib/php:/Applications/MAMP/htdocs/otsg/include/:') in /Applications/MAMP/htdocs/otsg/include/include.php on line 9
Run Code Online (Sandbox Code Playgroud)
提前致谢
我正在尝试将查询写入文件以进行调试.该文件在database/execute.php.我想写的文件是database/queries.php.
我正在尝试使用 file_put_contents('queries.txt', $query)
但我得到了
file_put_contents(queries.txt)[function.file-put-contents]:无法打开流:权限被拒绝
我有queries.txt文件chmod'd到777,问题是什么?
> Warning: include_once(/PoliticalForum/headerSite.php) [function.include-once]: failed to open stream: No such file or
> directory in C:\xampp\htdocs\PoliticalForum\mainHome.php on line 16
>
> Warning: include_once() [function.include]: Failed opening
> '/PoliticalForum/headerSite.php' for inclusion
> (include_path='.;C:\xampp\php\PEAR') in
> C:\xampp\htdocs\PoliticalForum\mainHome.php on line 16
Run Code Online (Sandbox Code Playgroud)
使用include_once时为什么会出现错误:
include_once("/PoliticalForum/headerSite.php");
Run Code Online (Sandbox Code Playgroud) 我尝试运行PHP脚本时收到以下错误:
无法打开流:第3行脚本中的C:\ wamp\www\LOF\Data.php中没有此类文件或目录:
我的代码如下:
<?php
$json = json_decode(file_get_contents('prod.api.pvp.net/api/lol/euw/v1.1/game/by-summoner/20986461/recent?api_key=*key*'));
print_r($json);
?>
Run Code Online (Sandbox Code Playgroud)
注意:*key*是URL(我的API密钥)中字符串的替换,并且出于隐私原因而被隐藏.
我https://从URL中删除了一个错误消失.
我在这里做错了吗?也许是URL?
我已经克隆了一个laravel repo到我的CentOS 7盒子里.当我尝试运行它时,我得到500错误,没有显示任何内容.
所以我查看了/var/log/httpd/error_log,我发现我有一些权限错误:
[Mon May 16 11:39:32.996441 2016] [:error] [pid 2434] [client 104.156.67.195:39136] PHP Fatal error: Uncaught UnexpectedValueException: The stream or file "/var/www/html/MYSITE/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied in /var/www/html/MYSITE/bootstrap/cache/compiled.php:13701
Stack trace:
#0 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13635): Monolog\\Handler\\StreamHandler->write(Array)
#1 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13396): Monolog\\Handler\\AbstractProcessingHandler->handle(Array)
#2 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13494): Monolog\\Logger->addRecord(400, Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
#3 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13189): Monolog\\Logger->error(Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
#4 /var/www/html/MYSITE/bootstrap/cache/compiled.php(13160): Illuminate\\Log\\Writer->writeLog('error', Object(Symfony\\Component\\Debug\\Exception\\FatalErrorException), Array)
# in /var/www/html/MYSITE/bootstrap/cache/compiled.php on line 13701
Run Code Online (Sandbox Code Playgroud)
我已经做了以下尝试来克服这些问题:
chmod -R 775 storage
chmod -R 775 vendor
chown -R apache:apache storage
Run Code Online (Sandbox Code Playgroud)
所以它现在显示如下: …
我学习如何编写WordPress插件.我需要一些帮助将一些数据写入XML文件.我在我的本地机器上,一台运行MAMP的Mac.我有PHP 5.2.13.在我的插件中,我有:
$file_handle = fopen('markers.xml', 'w');
$stringdata = "Test Info";
fwrite($file_handle, $stringdata);
fclose($file_handle);
Run Code Online (Sandbox Code Playgroud)
运行上面的代码给出了以下错误:
警告:fopen(markers.xml)[function.fopen]:无法打开流:第73行/Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php中的权限被拒绝
警告:fwrite():提供的参数不是第75行/Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php中的有效流资源
警告:fclose():提供的参数不是76行/Users/my_name/Sites/my_site/wp-content/plugins/my_plugin_folder/my_plugin_main_file.php中的有效流资源
我尝试使用$ file_handle行中的绝对路径:http://my_site/wp-content/plugins/my_plugin_folder/markers.xml.但是,这没有用.
我还尝试更改markers.xml的权限,如下所示:
(我):读写(未知):只读大家:读写
出于某种原因,我的Mac不会让我改变(未知)读写.我不确定这是否有所作为.我右键单击该文件并选择"获取信息"以更改权限.
在phpInfo()中,我得到了:
"已注册的PHP Streams https,ftps,compress.zlib,compress.bzip2,php,file,data,http,ftp"
是WordPress设置导致问题?还是只是PHP问题?
有关如何解决这个问题的任何建议?
谢谢.
我在"PAGE A"中有这个测试代码:
<?php
require_once('../mysite/php/classes/eventManager.php');
$x=new EventManager();
$y=$x->loadNumbers();
?>
Run Code Online (Sandbox Code Playgroud)
"eventManager.php"里面有一个require_once:
<?php
require_once('../includes/dbconn.inc');
class EventManager {...}
?>
Run Code Online (Sandbox Code Playgroud)
我的文件夹结构是这样的:
mysite/php/classes folder and includes folder
Run Code Online (Sandbox Code Playgroud)
如果我在浏览器中测试PAGE A,我会收到:
警告:require_once(../ includes/dbconn.inc)[function.require-once]:无法打开流:C:\ wamp\www\mysite\php\classes\eventManager.php中没有这样的文件或目录3
致命错误:require_once()[function.require]:在C:\ wamp\www\mysite\php中打开所需的'../includes/dbconn.inc'(include_path ='.; C:\ php5\pear')失败第3行的\ classes\eventManager.php
错误在哪里?
谢谢卢卡
我正在尝试让PHP将上传的文件从tmp目录移动到我的网络服务器上永久的某个地方.这看起来很简单,但我收到了这个错误:
Unable to move 'C:\UniServer\tmp\php3F62.tmp' to 'static/images/slides/1/1.jpg'
非常直截了当,对吧?它找不到目标文件夹.
我的问题是:如何引用所需的目标目录?
引用是否相对于脚本在服务器上的位置?或者它相对于URL?还是PHP DOCUMENT_ROOT?还是操作系统的文件系统?或者是其他东西?
我无法在PHP文档中找到答案,或者在SO上找到任何类似的问题.
有人可以帮忙吗?谢谢.
我的服务器在/ var/www/html我在/var/www/html/fileio_test/io_test.php中有一个php脚本
<?php
$logging = <<< LOG
This is a test
LOG;
$testfile = fopen('/home/djameson/test.txt', 'a');
fwrite ($testfile, $logging);
fclose($testfile);
?>
Run Code Online (Sandbox Code Playgroud)
当我尝试运行这个脚本时,我得到了
Warning: fopen(/home/djameson/test.txt): failed to open stream: Permission denied in /var/www/html/fileio_test/io_test.php on line 7
Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/html/fileio_test/io_test.php on line 8
Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/html/fileio_test/io_test.php on line 9
Run Code Online (Sandbox Code Playgroud)
如何让apache写入我的主目录?服务器在fedora 20上运行.
php ×9
apache ×3
dreamweaver ×2
fatal-error ×2
warnings ×2
centos ×1
debugging ×1
file-io ×1
file-upload ×1
fopen ×1
https ×1
laravel ×1
linux ×1
mysql ×1
oop ×1
permissions ×1
require ×1
require-once ×1
wordpress ×1