See How_do_I_solve_the_Headers_already_sent_warning_problem? > FAQ Troubleshooting « WordPress Codex
(This error) is usually because there are spaces, new lines, or other
stuff before an opening<?php
tag or after a closing?>
tag,
typically in wp-config.php.
Open the file with a plain text editor (like Notepad or BBEdit) and clear out the white space. Check that the very first characters are <?php
and the very last characters are either NOT a PHP closing tag, or a closing tag ?>
with no blank lines or spaces after it. (FYI, a PHP file can run fine without the closing ?>
tag.)
When saving, be sure the file encoding is not UTF-8 BOM but plain UTF-8 or any without the BOM suffix.
And:
This could be true about some other file too, so please check the
error message, as it will list the specific file name where the error
occurred. Replacing the faulty file with one from your most recent
backup or one from a fresh WordPress download is your best bet.If the error message states:
Warning: Cannot modify header information
,
- headers already sent by (output started at /path/blog/wp-config.php:34) in /path/blog/wp-login.php on line 42
then the problem is at line #34 of wp-config.php, not line #42 of
wp-login.php. In this scenario, line #42 of wp-login.php is the
victim. It is being affected by the excess whitespace at line #34 of
wp-config.php.If the error message states: Warning:
Cannot modify header information
, then the problem is at line #8 of admin-header.php, not line #569
- headers already sent by (output started at /path/wp-admin/admin-header.php:8) in /path/wp-admin/post.php on line
569
of post.php. In this scenario, line #569 of post.php is the victim. It
is being affected by the excess whitespace at line #8 of
admin-header.php.
К сожалению, сегодняшнее обновление Вордпресс прошло гладко не у всех. Критических ситуаций я не зафиксировал, однако обращений было больше, чем обычно. И связаны они в основном были с плагинами.
В частности, на нескольких сайтах в админке появились ошибки в ядре: plugin.php, functions.php, misc.php, admin-header.php
Warning: count(): Parameter must be an array or an object that implements Countable in /var/www/danilin.biz/wp-admin/includes/plugin.php on line 1392
Warning: Cannot modify header information — headers already sent by (output started at /var/www/danilin.biz/wp-admin/includes/plugin.php:1392) in /var/www/danilin.biz/wp-includes/functions.php on line 5946
Warning: Cannot modify header information — headers already sent by (output started at /var/www/danilin.biz/wp-admin/includes/plugin.php:1392) in /var/www/danilin.biz/wp-admin/includes/misc.php on line 1252
Warning: Cannot modify header information — headers already sent by (output started at /var/www/danilin.biz/wp-admin/includes/plugin.php:1392) in /var/www/danilin.biz/wp-admin/admin-header.php on line 9
Страшного тут ничего нет, но и приятного мало — проблема с каким-то из плагинов. В первую очередь нужно выяснить с каким именно. Действуем по старой схеме: отключаем все плагины, затем по одному включаем и смотрим после какого появится ошибка.
Уже поймали целую кучу, из популярных вот эти два точно вызывают ошибку.
Polylang тоже стал ругаться.
Warning: Declaration of PLL_Walker_Dropdown::walk($elements, $args = Array) should be compatible with Walker::walk($elements, $max_depth, …$args) in /var/www/danilin.biz/wp-content/plugins/polylang/include/walker-dropdown.php on line 0
Что делать
Ждать обновления проблемных плагинов или выхода Вордпресс 5.3.1, в котором обещали исправить это недоразумение.
Не забываем перед обновлением делать бэкапы. После обновления рекомендую сбросить кеш браузера, иначе могут наблюдаться проблемы с редактором.
TGM Plugin Activation (Обновлено 27 января 2019 г.)
Еще одной причиной возникновения ошибок является интегрированный в некоторые устаревшие премиум-темы модуль TGM Plugin Activation. Для работы сайта он не нужен, можно просто найти в коде его инициализацию и закомментировать ее.
Примерно так
if ( file_exists( get_template_directory() . '/admin/tgm/tgm-init.php' ) ) {
// require_once get_template_directory() . '/admin/tgm/tgm-init.php';
}
Больше полезных материалов по веб-разработке на моем канале в Телеграм.
Обязательно подпишитесь.
Also refer Common WordPress Errors for the most common WordPress errors experienced by WordPress users such as
- The White Screen
- Internal Server Error
- Error Establishing Database Connection
- Failed Auto-Upgrade
- Connection Timed Out
- Maintenance Mode Following Upgrade
- PHP errors or MySQL DB errors
Sometimes it may be necessary to deactivate all plugins, but you can’t access the Administration Screens to do so. One of two methods are available to deactivate all plugins.
Use phpMyAdmin to deactivate all plugins.
- In the table wp_options, under the option_name column (field) find the active_plugins row
- Change the option_value field to: a:0:{}
Or reset your plugins folder via FTP or the file manager provided in your host’s control panel. This method preserves plugin options but requires plugins be manually reactivated.
- Via FTP or your host’s file manager, navigate to the wp-contents folder (directory)
- Via FTP or your host’s file manager, rename the folder “plugins” to “plugins.hold”
- Login to your WordPress administration plugins page (/wp-admin/plugins.php) – this will disable any plugin that is “missing”.
- Via FTP or your host’s file manager, rename “plugins.hold” back to “plugins”
How to clear the “Briefly unavailable for scheduled maintenance” message after doing automatic upgrade?
As part of the automatic upgrade WordPress places a file named .maintenance
in the blog base folder (folder that contains the wp-admin folder). If that file exists, then vistors will see the message Briefly unavailable for scheduled maintenance. Check back in a minute.
To stop that message from being displayed to vistors, just delete the .maintenance
file. The automatic upgrade should be executed again, just in case it failed.
An update was just released, so why does my blog not recognize the update is available?
When an update is released, notification of that release is displayed at the top administration screens saying WordPress x.x.x is available! Please update now. Not every blog will see that message at the same time. Your blog is programmed to check for updates every 12 hours, but the timing of that check is purely random. So if your blog just checked for updates minutes before an update was released, you won’t see the update message until your blog checks for updates 12 hours later.
If you want your blog to check right now for updates, you can delete the update_core option name record in your wp_options table. Note that plugins and themes each have their own check and update cycle, controlled by the records update_plugins and update_themes, in wp_options.
Relevant discussion thread:
- https://wordpress.org/support/topic/242485
Why did I lose custom changes to the WordPress Default Theme during the last automatic upgrade?
A core upgrade copies all the new files from the distribution over the old ones, so if you changed existing files in the WordPress default theme (e.g. wp-content/themes/twentysixteen/style.css), those changes got overwritten with the new version of that file.
Please note, a core upgrade goes through a list of “old files”, as defined in wp-admin/includes/update-core.php, and deletes those files. Any files not on the list, and not in the distribution, are preserved.
Remember, that before upgrades, whether automatic or manual, both the WordPress Files and database should be backed-up as explained in WordPress Backups.
A better way to modify the default theme is by using a child theme. It’s a little more work to set up, but worth the effort because your customizations will be safe when the main theme is updated.
How do you repair a MySQL database table?
Every once in a while, it may be necessary to repair one or more MySQL database tables. According to the How to Repair MyISAM Tables at dev.mysql.com there are a number of reasons to repair a table including errors such as “tbl_name.frm is locked against change”, “Can’t find file tbl_name.MYI (Errcode: nnn)”, “Unexpected end of file”, “Record file is crashed”, or “Got error nnn from table handler”.
Here are the steps to repair a table in a MySQL database using phpMyAdmin:
- Login to hosting account.
- Login to phpMyAdmin.
- Choose the affected database. If you only have one database, it should choose it by default so you don’t need to do anything.
- In the main panel, you should see a list of your database tables. Check the boxes by the tables that need repair.
- At the bottom of the window just below the list of tables, there is a drop down menu. Choose “Repair Table”
Remember, that it is advisable to have a current backup of your database at all times. See also WordPress Backups
How do I empty a database table?
Refer Emptying a Database Table
Emailed passwords are not being received
Description: When users try to register with your blog or change their passwords by entering their username and/or email, WordPress indicates that their password has been emailed to them, but it is never received.
Reason and Solutions: WordPress uses the standard PHP mail() function, which uses sendmail. No account information is needed. This is not generally a problem if you are using a hosting service, but if you are using your own box and do not have an SMTP server, the mail will never send. If you are using a *NIX box, you should have either postfix or sendmail on your machine; you will just need to set them up (search the Internet for how-to’s). If you do not want to go through setting up a complete mail server on your *NIX box you may find msmtp useful — it provides “A secure, effective and simple way of getting mail off a system to your mail hub”. On a Windows machine, try a sendmail emulator like Glob SendMail.
More help can be found on this thread of the WordPress Support Forums: https://wordpress.org/support/topic.php?id=24981.
Windows Host Server Specific: Check your “Relay” settings on the SMTP Virtual Server. Grant access to 127.0.0.1
. Then in your php.inifile, set the SMTP
setting to the same IP address. Also set smtp_port
to 25
.
Ensure Proper Return Address is Used: By default, the WordPress mailer fills in the From: field with wordpress@yourdomain.com and the From: name as WordPress.
This is fine if this is a valid e-mail address. For example, if your real e-mail is wordpress@yourdomain.com, your host should pass the email on for delivery. It will probably send your mail as long as yourdomain.com is setup to send and receive mail, even if wordpress is not a valid mail box. But if you set you real email as the From: address and it’s something like wpgod@gmail.com, the mail may not send because gmail.com is not a domain handled by the mail server.
Treated as Spam: Your email message may have been routed to a spam folder or even worse, simply discarded as malicious. There are a couple measures you can use to convince recipient’s mail servers that your message is legitimate and should be delivered as addressed.
SPF: (Sender Policy Framework) This is the most common anti-spam measure used. If you are on a hosted system, there is a good chance your host has set this up for the mail server you are using. Have WordPress email you and check the message headers for evidence that the message passed the SPF check. You can get a message sent by following the Forgot Password link on the login page. To keep your old password, do not follow the link in the message.
If your system email failed the SPF check, you can set up the credentials if you have access to your DNS records and your mail server’s domain belongs to you. Check the return path of the email your system sent. If the mail server listed there has your domain name, you can set up SPF credentials. There are several how-tos on the Internet.
DKIM: (Domain Key Identified Mail) This system is also used. You can use both SPF and DKIM in the same message. Again, just as with SPF, you can check if your receiving mailserver verified your host’s domain key by examining the mail header. There is a fair chance no signature key was provided, indicating your host chose to not use this protocol. Also as with SPF, if you can edit your DNS records and the mail server belongs to your domain, you can set up DKIM credentials yourself. Some how-tos exist if you search the Internet.
Why can’t I see my posts? All I see is Sorry, no posts match your criteria?
Clearing your browser cache and cookies may resolve this problem. See also I Make Changes and Nothing Happens
Description: You got a warning message on your browser that says:
Warning: Cannot modify header information - headers already sent by (output started at
Reason and Solution:
It is usually because there are spaces, new lines, or other stuff before an opening <?php
tag or after a closing ?>
tag, typically in wp-config.php. This can also happen in other edited PHP files that are not theme templates, so please check the error message, as it will list the specific file name where the error occurred (see “Interpreting the Error Message” below). Replacing the faulty file with one from your most recent backup or one from a fresh WordPress download is your best bet, but if neither of those are an option, please follow the steps below.
Just because you cannot see anything does not mean that PHP sees the same.
- Download the file mentioned in the error message via FTP or the file manager provided in your host’s control panel.
- Open that file in a plain text editor (NOT Microsoft Word or similar. Notepad or BBEdit are fine).
- Check that the very first characters are with no blank lines or spaces after it.
- Before saving, or use the Save as dialog, ensure the file encoding is not
UTF-8 BOM
but plainUTF-8
or any without theBOM
suffix.
To be sure about the end of the file, do this:
- Place the cursor between the ? and >
- Now press the DELETE key on your computer
Note to MAC users: The “DELETE” key on a PC deletes characters to the right of the cursor. That is the key noted here. - Keep that key pressed
- For at least 15 seconds
- Now type > and
- save without pressing any other key at all.
- If you press another key, you will bring the problem back.
- DO NOT PUT CODE IN UNNECESSARY CODE BLOCKS, PUT THEM IN A SINGLE PHP BLOCK.
Wrong:
<?php some code; ?> <?php some other codes; ?>
Correct:
<?php code; some other code; ?>
Upload the file back to your server after editing and saving the file.
Note: Also check the encoding of the file. If the file is encoded as UTF-8 with BOM, the BOM is seen as a character which starts the output.
Interpreting the Error Message:
If the error message states: Warning: Cannot modify header information - headers already sent by (output started at /path/blog/wp-config.php:34) in /path/blog/wp-login.php on line 42
, then the problem is at line #34 of wp-config.php
, not line #42 of wp-login.php
. In this scenario, line #42 of wp-login.php
is the victim. It is being affected by the excess whitespace at line #34 of wp-config.php
.
If the error message states: Warning: Cannot modify header information - headers already sent by (output started at /path/wp-admin/admin-header.php:8) in /path/wp-admin/post.php on line 569
, then the problem is at line #8 of admin-header.php
, not line #569 of post.php
. In this scenario, line #569 of post.php
is the victim. It is being affected by the excess whitespace at line #8 of admin-header.php
.
Why doesn’t my “Publish” or “Save Draft” button work?
To resolve this and similar issues, disable your plugins one at a time until you find the source of the issue. Generally, this will be due to two or more plugins trying to use the same resources (for example, JQuery or other Java-based tools).
In addition, it could be that there is a problem with your browser. A common resolution is to empty the browser’s cache. Please consult the documentation for your preferred browser to learn how to do this.
How to fix 404 error when using Pretty Permalinks?
If an error 404 occurs when using the Pretty Permalink choices such as Day and Name in Administration > Settings > Settings_Permalinks_Screen it could be a result of the mod_rewrite module not being activated/installed. The solution is to activate mod_rewrite for the Apache web-server. Check the apacheconfhttpd.conf file for the line # LoadModule rewrite_module modules/mod_rewrite.so
and delete the # in front of the line. Then stop Apache and start it again. Note: you may have to ask your host to activate mod_rewrite.
See also Using Permalinks. Relevant discussion thread is https://wordpress.org/support/topic/234726
Not sure why this problem happens, but here’s a couple of things to try one of these two solutions.
This usually fixes the problem:
- Create new admin user (e.g. newadmin) with Administrator Role
- Login as ‘newadmin’
- Degrade the old ‘admin’ user to Role of Subscriber and Save
- Promote the old ‘admin’ back to Administrator Role and Save
- Login as the old ‘admin’
If that doesn’t work, try:
- Create a new admin user (e.g. newadmin) with Administrator Role
- Login as ‘newadmin’
- Delete the old ‘admin’ user and assign any posts to ‘newadmin’
- Create ‘admin’ user with Administrator Role
- Login as ‘admin’
- Delete ‘newadmin’ user and assign posts to ‘admin’
Why is the wrong author name displayed for a post on a blog?
This problem is usually solved by the same solution as is presented in the question right before this one:
Why isn’t the admin user listed as an author when editing posts?
How do I find more help?
There are various resources that will help you find more help with WordPress, in addition to these FAQ.
- Troubleshooting
- Finding WordPress Help
- Using the Support Forums
- Resources and Technical Articles about WordPress
- Installation Problems
Содержание
- После обновления WP до 6 нет доступ в админку
- После обновления WP до 6 нет доступ в админку
- Как избавиться от /wordpress/ в адресе сайта на WordPress
- Fatal Error wp-blog-header.php
После обновления WP до 6 нет доступ в админку
Посмотрел различные решения.
Ни плагины ни тема не виноваты, в логах админки следующая запись:
Файлы в голове public_html присутствуют.
- Тема изменена 7 месяцев, 1 неделя назад пользователем std31 .
Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]
Failed opening required ‘wp-admin/wp-blog-header.php’
…
wp-admin/index.php on line 6
- В WordPress нет файла wp-admin/wp-blog-header.php , он есть только в корневом каталоге.
- Ни в wp-admin/index.php ни в index.php в строке 6 нет подключения файла wp-blog-header.php .
Сергей, Спасибо за рекомендации
Скачал wordpress 6 с оф сайта, распаковал и взял из папки ..wp-adminindex.php и заменил его на сервере. И обнаружил, что содержимое файла превратилось вот в это
Так ведь не должно быть?
Наверное буду следовать совету из статьи если вас взломали.
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
Скачал сайт на локальный сервер (open server)
Импортировал бд с сайта в локальную бд
внес изменения в таблицу wp_options.php
-поменял URL
внес изменения в файл wp_config.php
-Имя базы данных для WordPress
-Имя пользователя базы данных root
-пустой пароль бд
таблице wp-users
-поменял пароль у админа (свойство поля md5 ставил)
В админку я теперь захожу, но в ней только текстовая версия без оформления, и у меня нет прав доступа что либо изменить.
пишет
плагины отключал
темы отключал
и то и другое вместе отключал не помогло
.htaccess отключал, заменял на новый от wordpress 6 версии
Что делать, куда копать?
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
std31, привет.
Вы выбрали путь боли и страданий, поднимая явно скомпрометированный сайт на локальном сервере, не говоря о том, что это просто небезопасно, если вы не имеете опыта работы с такими случаями.
В админку я теперь захожу, но в ней только текстовая версия без оформления, и у меня нет прав доступа что либо изменить.
Очевидно, пробелма с правами доступа к файлам и директориям. Тут, конечно, можно посоветовать это всё восстановить, чтобы заработало «как надо», но не совсем ясна ваша итоговая цель. Вы это делаете на локалхосте для чего?
Привет m0ze,
Я хочу получить доступ к своим данным и сохранить статьи блога.
Получить права admin
Подумал раз проблемы с правами доступа, то уж на локальном сервере я смогу до них добраться.
А еще решил не экспериментировать на работающем сайте. Изменить я на нем ничего не могу, но он хотя бы работает.
>Очевидно, проблема с правами доступа к файлам и директориям.
Посмотрел на права директории wp_admin 755
файлы внутри 644
У всех директорий и файлов таки права
кроме public_htmlindex.php у него 444
m0ze, вы оказываете платные консультации?
с предложениями фриланса, платных консультаций и прочего внефорумного — в раздел «Специалисты»
во всех других разделах это считается нарушением правил форума.
std31,
Я хочу получить доступ к своим данным и сохранить статьи блога.
Получить права admin
Если вы владелец сайта, то, по логике вещей, у вас аккаунт администратора должен быть. Я что-то упустил? Из ранее написанного я понял, что у вас проблема именно с вредоносным кодом, который мешает/блокирует штатную работу сайта, но не с аккаунтом администратора.
Подумал раз проблемы с правами доступа, то уж на локальном сервере я смогу до них добраться.
Опять же, из выше описанного (скорее всего) проблема с правами у вас на локальном сервере.
m0ze, вы оказываете платные консультации?
Да, и сайты восстанавливаю после взлома, но если нужен обмен контактами, то это делается в разделе «Поиск специалистов».
С проблемой разобрался.
сайт был взломан через плагин из непроверенного источника.
Был установлен доп плагин, который шифровал index.php админки и другие файлы, блокировал пользователя admin для внесения каких либо изменений.
Вариант лечения, скачать все файлы на локальном сервере чистить от вредоносного кода.
Источник
После обновления WP до 6 нет доступ в админку
Посмотрел различные решения.
Ни плагины ни тема не виноваты, в логах админки следующая запись:
Файлы в голове public_html присутствуют.
- Тема изменена 7 месяцев, 1 неделя назад пользователем std31 .
Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]
Failed opening required ‘wp-admin/wp-blog-header.php’
…
wp-admin/index.php on line 6
- В WordPress нет файла wp-admin/wp-blog-header.php , он есть только в корневом каталоге.
- Ни в wp-admin/index.php ни в index.php в строке 6 нет подключения файла wp-blog-header.php .
Сергей, Спасибо за рекомендации
Скачал wordpress 6 с оф сайта, распаковал и взял из папки ..wp-adminindex.php и заменил его на сервере. И обнаружил, что содержимое файла превратилось вот в это
Так ведь не должно быть?
Наверное буду следовать совету из статьи если вас взломали.
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
Скачал сайт на локальный сервер (open server)
Импортировал бд с сайта в локальную бд
внес изменения в таблицу wp_options.php
-поменял URL
внес изменения в файл wp_config.php
-Имя базы данных для WordPress
-Имя пользователя базы данных root
-пустой пароль бд
таблице wp-users
-поменял пароль у админа (свойство поля md5 ставил)
В админку я теперь захожу, но в ней только текстовая версия без оформления, и у меня нет прав доступа что либо изменить.
пишет
плагины отключал
темы отключал
и то и другое вместе отключал не помогло
.htaccess отключал, заменял на новый от wordpress 6 версии
Что делать, куда копать?
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
- Ответ изменён 7 месяцев, 1 неделя назад пользователем std31 .
std31, привет.
Вы выбрали путь боли и страданий, поднимая явно скомпрометированный сайт на локальном сервере, не говоря о том, что это просто небезопасно, если вы не имеете опыта работы с такими случаями.
В админку я теперь захожу, но в ней только текстовая версия без оформления, и у меня нет прав доступа что либо изменить.
Очевидно, пробелма с правами доступа к файлам и директориям. Тут, конечно, можно посоветовать это всё восстановить, чтобы заработало «как надо», но не совсем ясна ваша итоговая цель. Вы это делаете на локалхосте для чего?
Привет m0ze,
Я хочу получить доступ к своим данным и сохранить статьи блога.
Получить права admin
Подумал раз проблемы с правами доступа, то уж на локальном сервере я смогу до них добраться.
А еще решил не экспериментировать на работающем сайте. Изменить я на нем ничего не могу, но он хотя бы работает.
>Очевидно, проблема с правами доступа к файлам и директориям.
Посмотрел на права директории wp_admin 755
файлы внутри 644
У всех директорий и файлов таки права
кроме public_htmlindex.php у него 444
m0ze, вы оказываете платные консультации?
с предложениями фриланса, платных консультаций и прочего внефорумного — в раздел «Специалисты»
во всех других разделах это считается нарушением правил форума.
std31,
Я хочу получить доступ к своим данным и сохранить статьи блога.
Получить права admin
Если вы владелец сайта, то, по логике вещей, у вас аккаунт администратора должен быть. Я что-то упустил? Из ранее написанного я понял, что у вас проблема именно с вредоносным кодом, который мешает/блокирует штатную работу сайта, но не с аккаунтом администратора.
Подумал раз проблемы с правами доступа, то уж на локальном сервере я смогу до них добраться.
Опять же, из выше описанного (скорее всего) проблема с правами у вас на локальном сервере.
m0ze, вы оказываете платные консультации?
Да, и сайты восстанавливаю после взлома, но если нужен обмен контактами, то это делается в разделе «Поиск специалистов».
С проблемой разобрался.
сайт был взломан через плагин из непроверенного источника.
Был установлен доп плагин, который шифровал index.php админки и другие файлы, блокировал пользователя admin для внесения каких либо изменений.
Вариант лечения, скачать все файлы на локальном сервере чистить от вредоносного кода.
Источник
Как избавиться от /wordpress/ в адресе сайта на WordPress
Опубликовано: ADv Дата 03.10.2014 в рубрике Настройки 4 комментария
WordPress очень легко устанавливать, однако иногда новички устанавливают WordPress в поддиректорию, а не в корневую папку своего сайта, например http://www.example.com/wordpress/ вместо http://www.example.com. Если вы случайно установили WordPress в подпапку, и теперь хотите переместить его в корневую директорию, то вы на верном пути. В этой статье мы покажем вам как избавиться от /wordpress/ в URL’е вашего сайта.
Примечание: Способ, описанный в этой статье, также сработает и для других подпапок.
Если вы еще не загружали никакой контент на ваш сайт, то вы можете просто удалить существующую копию WordPress и заново установить движок. Однако, если вы уже настроили и запустили сайт, продолжайте чтение статьи.
Прежде всего вам необходимо войти в административную панель вашего сайта на WordPress и перейти в раздел Настройки » Общие. На странице настроек вы увидите поля Адрес WordPress (URL) и Адрес сайта (URL), в которых указан одинаковый адрес. Вам необходимо изменить значение Адрес сайта (URL), чтобы тот указывал на ваш корневой домен, например http://www.example.com, а настройку Адрес WordPress (URL) оставить как есть. После этого нажмите кнопку Сохранить изменения.
Далее, вам необходимо подключиться к своему сайту с помощью FTP клиента. После того, как вы подключились, перейдите в папку /wordpress/ и скачайте файлы .htaccess и index.php на рабочий стол вашего компьютера.
Возможно, что вы не увидите файла .htaccess в вашей папке /wordpress/, потому как он является скрытым файлом, а ваш фтп клиент может не отображать его. Для того, чтобы увидеть скрытый файл, необходимо активировать опцию показа скрытых файлов в вашем фтп клиенте. Если вы используете Filezilla, то вам необходимо кликнуть на меню Server и выбрать опцию ‘Force Showing Hidden Files’.
После того, как вы скачаете оба файла на свой рабочий стол, необходимо открыть файл index.php в текстовом редакторе типа Блокнот. В этом файле вы увидите строку вроде этой:
Эта строка загружает файл wp-blog-header.php, необходимый для загрузки фронтенда вашего сайта на WordPress. Теперь нужно сделать следующее: ввести корректное расположение файла путем замены существующей строки на следующую:
Сохраните изменения и загрузите оба файла, index.php и .htaccess, с вашего рабочего стола в корневую папку домена с помощью FTP. Корневая папка — это родительская папка с папкой wordpress, и обычно она называется /www/ или /public_html/
Вот и все. Теперь вы можете перейти на свой сайт по адресу основного домена и все будет замечательно работать. Однако, если же вам нужно залогиниться в административную панель WordPress, то все равно придется переходить в wp-admin внутри папки wordpress следующим образом:
Мы надеемся, что эта статья помогла вам избавиться от /wordpress/ в адресе вашего сайта.
По всем вопросам и отзывам просьба писать в комментарии ниже.
Не забывайте, по возможности, оценивать понравившиеся записи количеством звездочек на ваше усмотрение.
Источник
Hello, I’m having trouble impossible to solve for now on my website.
Displaying
Fatal error: Uncaught Error: Call to undefined function wp() in /home/www/mwz5737/floracbd.fr/wordpress/wordpress/wp-blog-header.php:16 Stack trace: #0 /home/www/mwz5737/floracbd.fr/wordpress/wordpress/index.php(17): require() #1
We already tried the steps mentionned here
And tried to backup an older version of the website but nothing works.
Can anyone help please ?
The page I need help with: [log in to see the link]
Where you trying to update WordPress/plugins/theme etc. before this error happened?
Hello, thanks for reply.
No automatic update was activated. And I wasn’t updating any plugin/theme or other.
If anyone can help I’b so glad my website is off for almost a day and I really need it.
Thank you
Hello, for me it wasn’t error 500 but :
Fatal error: Uncaught Error: Call to undefined function wp() in /home/www/mwz5737/floracbd.fr/wordpress/wordpress/wp-blog-header.php:16 Stack trace: #0 /home/www/mwz5737/floracbd.fr/wordpress/wordpress/index.php(17): require() #1
It was an attack and solve it by cleaning and removing the hack
Please do not jump into other topics and detract from their problem. If the troubleshooting already posted made no difference for you, then, as per the Forum Welcome, please post your own topic. A lot more people will see your post, and that way you stand a good chance of getting the assistance you want. Despite any similarity in symptoms, your issue is likely to be completely different because of possible differences in physical servers, accounts, hosts, plugins, theme, configurations, etc. Thus one problem, on one setup is not indicative of the functionality and reliability of an application as a whole.
Источник
When I enable WP_DEBUG, I am getting the error:
WARNING: wp-admin/admin-header.php:9 — Cannot modify header
information — headers already sent by (output started at
/Applications/MAMP/htdocs/site-url.com/wp-includes/functions.php:3886)
require_once(‘wp-admin/admin-header.php’), header
but it is only happening on wp-admin pages, not on the front end.
I have read about this in support pages like this Codex FAQ page and rather than fiddling with text editors and encoding, I simply downloaded WordPress core from the release archive for the same version that’s on my site (version 4.5.5 — I am in the process of debugging before I upgrade), and I replaced my local site’s version of functions.php with the functions.php file I freshly downloaded from the release archive. That had no effect.
Line 3886 of functions.php is the 3rd line below (the first if ( ! is_null( $message ) )
):
if ( WP_DEBUG && apply_filters( 'deprecated_argument_trigger_error', true ) ) {
if ( function_exists( '__' ) ) {
if ( ! is_null( $message ) )
trigger_error( sprintf( __('%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s! %3$s'), $function, $version, $message ) );
else
trigger_error( sprintf( __('%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s with no alternative available.'), $function, $version ) );
} else {
if ( ! is_null( $message ) )
trigger_error( sprintf( '%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s! %3$s', $function, $version, $message ) );
else
trigger_error( sprintf( '%1$s was called with an argument that is <strong>deprecated</strong> since version %2$s with no alternative available.', $function, $version ) );
}
}
How do I resolve / further isolate this error?
Нет вывода перед отправкой заголовков!
Функции, отправляющие/изменяющие HTTP-заголовки, должны быть вызваны до того, как будет выполнен какой-либо вывод.
резюме <
В противном случае вызов завершается с ошибкой:
Предупреждение: невозможно изменить информацию заголовка — уже отправленные заголовки (вывод начался с script: строка)
Некоторые функции, изменяющие HTTP-заголовок:
-
header
/header_remove
-
session_start
/session_regenerate_id
-
setcookie
/setrawcookie
Вывод может быть:
-
Unintentional:
- Пробелы перед
<?php
или после?>
- Обозначение порядка байтов UTF-8
- Предыдущие сообщения об ошибках или уведомления
- Пробелы перед
-
Преднамеренное:
-
print
,echo
и другие функции, производящие вывод - Необработанные
<html>
разделы, предшествующие<?php
.
-
Почему это происходит?
Чтобы понять, почему заголовки должны быть отправлены перед выходом, необходимо
посмотреть типичный HTTP
ответ. PHP-скрипты в основном генерируют HTML-контент, но также передают
набор заголовков HTTP/CGI на веб-сервер:
HTTP/1.1 200 OK
Powered-By: PHP/5.3.7
Vary: Accept-Encoding
Content-Type: text/html; charset=utf-8
<html><head><title>PHP page output page</title></head>
<body><h1>Content</h1> <p>Some more output follows...</p>
and <a href="/"> <img src=internal-icon-delayed> </a>
Страница/вывод всегда следует за заголовками. PHP должен пройти
сначала создайте заголовки на веб-сервере. Это может сделать только один раз.
После двойной линии он никогда не может изменить их.
Когда PHP получает первый вывод (print
, echo
, <html>
), он будет
очистить все собранные заголовки. Впоследствии он может отправить весь вывод
он хочет. Но отправка последующих HTTP-заголовков невозможна.
Как узнать, где произошел преждевременный выход?
Предупреждение header()
содержит всю соответствующую информацию для
найти причину проблемы:
Предупреждение: невозможно изменить информацию заголовка — заголовки, уже отправленные (вывод начинается с/www/usr2345/htdocs/ auth.php: 52) в /www/usr 2345/htdocs/index.php в строке 100
Здесь «строка 100» относится к script, где не удалось выполнить вызов header()
.
Заметка «вывод, начатая с» в круглой скобке более значительна.
Он обозначает источник предыдущего вывода. В этом примере это auth.php
и строка 52
. Это то, где вам приходилось искать преждевременный выход.
Типичные причины:
-
Печать, эхо
Преднамеренный вывод из операторов
print
иecho
прекратится
возможность отправлять HTTP-заголовки. Поток приложения должен
быть реструктурированным, чтобы этого избежать. Используйте функции
и схемы шаблонов. Убедитесь, что вызовыheader()
происходят до сообщений
выписываются.Функции, которые производят вывод, включают
-
print
,echo
,printf
,vprintf
-
trigger_error
,ob_flush
,ob_end_flush
,var_dump
,print_r
-
readfile
,passthru
,flush
,imagepng
,imagejpeg
и т.д. и пользовательские функции.
-
-
Необработанные области HTML
Необработанные разделы HTML в файле
.php
также являются прямым выходом.
Script должны быть отмечены условия, вызывающие вызовheader()
перед любыми необработанными блоками<html>
.<!DOCTYPE html> <?php // Too late for headers already.
Используйте схему шаблонов, чтобы отделить обработку от логики вывода.
- Обработать код обработки формы на скриптах поверх.
- Используйте временные строковые переменные для отсрочки сообщений.
- Фактическая логика вывода и смешанный вывод HTML должны соответствовать последним.
-
Пробелы перед
<?php
для «script.php строка 1» предупрежденияЕсли предупреждение относится к выходу в строке
1
, то это в основном
пробелы, текст или HTML перед открывающим токеном<?php
.<?php # There a SINGLE space/newline before <? - Which already seals it.
Аналогично это может произойти для добавленных скриптов или script разделов:
?> <?php
PHP на самом деле поглощает одну строку после тегов. Но это не будет
компенсировать несколько новых строк или вкладок или пробелов, сдвинутых в такие промежутки. -
Спецификация UTF-8
Одной из проблем может быть только односторонняя линия и пространство. Но есть и «невидимые»
последовательности символов, которые могут вызвать это. Самый классный
Спецификация UTF-8 (байт-заказ-марка)который не отображается большинством текстовых редакторов. Это байтовая последовательностьEF BB BF
, которая
является необязательным и избыточным для кодированных документов UTF-8. Однако PHP должен лечить
это как сырой выход. Он может отображаться как символы
на выходе (если клиент
интерпретирует документ как латинский-1) или аналогичный «мусор».В частности, графические редакторы и Java-IDE не обращают внимания на свои
присутствие. Они не визуализируют его (обязаны стандартом Unicode).
Однако большинство программистов и консольных редакторов:Там легко понять проблему на ранней стадии. Другие редакторы могут идентифицировать
его присутствие в меню файлов/настроек (Notepad ++ в Windows может идентифицировать и
устранить проблему),
Другой способ проверки присутствия BOM прибегает к hexeditor.
В системах * nixhexdump
обычно доступен,
если не графический вариант, который упрощает проверку этих и других проблем:Легкое исправление заключается в том, чтобы установить текстовый редактор для сохранения файлов как «UTF-8 (no BOM)»
или подобная такая номенклатура. Зачастую новички прибегают к созданию новых
файлы и просто скопировать и снова вставить предыдущий код.Утилиты исправления
Существуют также автоматизированные инструменты для проверки и перезаписи текстовых файлов
(sed
/awk
илиrecode
).
Для PHP специально существуетphptags
tag tidier.
Он переписывает закрытые и открытые теги в длинные и короткие формы, но также легко
исправляет начальные и конечные пробелы, проблемы с Unicode и UTF-x:phptags --whitespace *.php
Это разумно использовать в целом include или каталог проекта.
-
Пробелы после
?>
Если источник ошибки упоминается как за
закрытие?>
то здесь выписывается какой-то пропущенный или необработанный текст.
Маркер конца PHP не завершает выполнение script при этом
точка. Любые символы текста/пробела после того, как они будут выписаны как содержимое страницы
до сих пор.Общепринято, в частности, новичкам, что trailing
?>
PHP
теги close должны быть опущены. Это предотвращает небольшую часть этих случаев.
(Чаще всего сценарииinclude()d
являются виновниками.) -
Источник ошибки, указанный как «Неизвестно в строке 0»
Обычно это расширение PHP или php.ini, если источник ошибок
конкретизируется.- Иногда параметр настройки потока
gzip
илиob_gzhandler
. - Но это может быть и любой загруженный в два раза модуль
extension=
генерирование неявного сообщения о запуске/предупреждении PHP.
- Иногда параметр настройки потока
-
Предыдущие сообщения об ошибках
Если другой оператор или выражение PHP вызывает предупреждение или
уведомление распечатывается, что также считается преждевременным выходом.В этом случае вам нужно избежать ошибки,
задержать выполнение оператора или подавить сообщение, например.
isset()
или@()
—
когда либо не препятствует отладке позже.
Нет сообщения об ошибке
Если у вас error_reporting
или display_errors
отключено на php.ini
,
то предупреждение не появится. Но игнорирование ошибок не вызовет проблемы
далеко. Заголовки по-прежнему не могут быть отправлены после преждевременного выхода.
Поэтому, когда header("Location: ...")
перенаправляет молча,
рекомендуется проконтролировать предупреждения. Обозначить их двумя простыми командами
на вызов script:
error_reporting(E_ALL);
ini_set("display_errors", 1);
Или set_error_handler("var_dump");
, если все остальное не работает.
Говоря о переадресации заголовков, вы должны часто использовать идиому вроде
это для конечных путей кода:
exit(header("Location: /finished.html"));
Предпочтительно даже функция полезности, которая печатает сообщение пользователя
в случае сбоев header()
.
Буферизация вывода в качестве обходного пути
PHP буферизация вывода
является обходным решением для решения этой проблемы. Он часто работает надежно, но не должен
заменить правильное структурирование приложений и отделить выход из управления
логика. Его фактическая цель сводится к минимизации передачи каналов на веб-сервер.
-
output_buffering=
тем не менее, может помочь.
Настройте его в php.ini
или через . htaccess
или даже . user.ini on
современные установки FPM/FastCGI.
Включение этого режима позволит PHP выводить выходные данные вместо того, чтобы передавать его на веб-сервер
мгновенно. Таким образом, PHP может собирать заголовки HTTP. -
Он также может быть связан с вызовом
ob_start();
на вершине вызова script. Это, однако, менее надежно по нескольким причинам:-
Даже если
<?php ob_start(); ?>
запускает первый script, пробел или
Спецификация может быть перетасована раньше, делает ее неэффективной. -
Он может скрывать пробелы для вывода HTML. Но как только приложение
логические попытки отправить двоичный контент (например, сгенерированное изображение),
буферизованный посторонний выход становится проблемой. (Необходимостьob_clean()
как предыдущий вариант.) -
Буфер ограничен по размеру и может быть легко переполнен, если оставить его по умолчанию.
И это не редкость, трудно отследить
когда это произойдет.
-
Оба подхода могут стать ненадежными — в частности, при переключении между
разработки и/или производственные серверы. Именно поэтому буферизация вывода
широко считается просто костылем/строго обходным путем.
См. также базовый пример использования
в руководстве, и для большего количества плюсов и минусов:
- Что такое буферизация вывода?
- Зачем использовать буферизацию вывода в PHP?
- Является ли использование буферизации вывода считающейся плохой практикой?
- Использовать регистр для буферизации вывода как правильное решение для уже отправленных заголовков
Но он работал на другом сервере!?
Если вы не получили предупреждения заголовков раньше, то выходная буферизация
Настройка php.ini
изменилось. Вероятно, он не сконфигурирован на текущем/новом сервере.
Проверка с помощью headers_sent()
Вы всегда можете использовать headers_sent()
, чтобы проверить, если
все еще можно… отправить заголовки. Что полезно для условной печати
информацию или применить другую резервную логику.
if (headers_sent()) {
die("Redirect failed. Please click on this link: <a href=...>");
}
else{
exit(header("Location: /user.php"));
}
Полезные обходные пути:
-
HTML
<meta>
тегЕсли ваше приложение структурно сложно исправить, тогда простое (но
несколько непрофессиональный) способ разрешить переадресацию — это инъекция HTML-кода
тег<meta>
. Перенаправление может быть достигнуто с помощью:<meta http-equiv="Location" content="http://example.com/">
Или с небольшой задержкой:
<meta http-equiv="Refresh" content="2; url=../target.html">
Это приводит к недействительному HTML, когда используется раздел
<head>
.
Большинство браузеров все еще принимают его. -
Переадресация JavaScript
В качестве альтернативы JavaScript-перенаправление
может использоваться для перенаправления страниц:<script> location.replace("target.html"); </script>
Хотя это часто более совместимо с HTML, чем обходное решение
<meta>
он берет на себя зависимость от клиентов, поддерживающих JavaScript.
Оба подхода, однако, делают приемлемые резервные копии, когда подлинный HTTP-заголовок()
вызовы не выполняются. В идеале вы всегда должны сочетать это с удобным для пользователя сообщением и
в качестве последней инстанции. (Например, это http_redirect()
Расширение PECL делает.)
Почему setcookie()
и session_start()
также затронуты
Оба setcookie()
и session_start()
должны отправить HTTP-заголовок Set-Cookie:
.
Таким образом, применяются те же условия, и аналогичные сообщения об ошибках будут сгенерированы
для случаев преждевременного выхода.
(Конечно, в браузере, кроме того, они подвержены воздействию файлов cookie,
или даже проблемы с прокси. Функциональность сеанса, очевидно, также зависит от
дисковое пространство и другие настройки php.ini и т.д.)
Дальнейшие ссылки
- Google предоставляет длинный список подобных обсуждений.
- И, конечно, многие конкретные случаи были также рассмотрены в переполнении стека.
- В WordPress часто задаются вопросы Как решить проблему, уже отправленную предупреждением? в общем виде.
- Сообщество Adobe: PHP-разработка: почему перенаправления не работают (уже отправленные заголовки)
- Часто задаваемые вопросы о нуклеусе: Что означает «заголовки страниц уже отправлены» ?
- Одним из более подробных объяснений является HTTP-заголовки и функция заголовка PHP() — учебник NicholasSolutions (ссылка на интернет-архив).
Он подробно описывает HTTP и дает несколько рекомендаций по переписыванию скриптов.
Видеть Как_решить_заголовки_уже_отправлено_предупреждение_проблема? > Часто задаваемые вопросы Устранение неполадок « WordPress Codex
(Эта ошибка) обычно возникает из-за того, что перед открытием есть пробелы, новые строки или другие вещи.
<?php
тег или после закрытия?>
тег, обычно в wp-config.php.
Откройте файл в обычном текстовом редакторе (например, Блокноте или BBEdit) и очистите пробелы. Убедитесь, что самые первые символы <?php
и самые последние символы либо НЕ являются закрывающим тегом PHP, либо or закрывающий тег ?>
без пустых строк или пробелов после него. (К вашему сведению, файл PHP может нормально работать без закрытия ?>
тег.)
При сохранении убедитесь, что кодировка файла не UTF-8 BOM, а обычная UTF-8 или любая другая без суффикса BOM.
А также:
Это может относиться и к некоторым другим файлам, поэтому проверьте сообщение об ошибке, так как в нем будет указано конкретное имя файла, в котором произошла ошибка. Лучше всего заменить неисправный файл одним из последней резервной копии или одним из свежей загрузки WordPress.
Если в сообщении об ошибке указано:
Warning: Cannot modify header information
, тогда проблема в строке № 34 файла wp-config.php, а не в строке № 42 файла wp-login.php. В этом случае жертвой является строка № 42 файла wp-login.php. На это влияет избыток пробелов в строке № 34 файла wp-config.php.
- headers already sent by (output started at /path/blog/wp-config.php:34) in /path/blog/wp-login.php on line 42Если в сообщении об ошибке указано: Предупреждение:
Cannot modify header information
, тогда проблема в строке № 8 файла admin-header.php, а не в строке № 569 файла post.php. В этом случае жертвой является строка #569 файла post.php. На это влияет избыток пробелов в строке № 8 файла admin-header.php.
- headers already sent by (output started at /path/wp-admin/admin-header.php:8) in /path/wp-admin/post.php on line
569
Линии, упомянутые в сообщениях об ошибках, содержат вызовы header()
и setcookie()
.
- Поверните массив в независимые аргументы функции — howto?
- Функция NOW () в PHP
- Подпись UTF-8 BOM в файлах PHP
- Чтение данных сеанса из файла хранения сеанса
- Не удалось записать файл кэша «/var/www/myapp/app/cache/dev/classes.php» при очистке кеша
- Код Igniter 2: Как продлить CI_Controller несколько раз?
- Как просмотреть ошибку запроса в PDO PHP
- Как увеличить максимальную переменную POST в PHP?
- Ошибка PHP Parse: синтаксическая ошибка, неожиданный T_OBJECT_OPERATOR
- mysqli соединение не работает внутри функции?
Это сообщение об ошибке запускается, когда что-либо отправляется перед отправкой заголовков HTTP (с помощью setcookie
или header
). Общие причины вывода чего-либо перед заголовками HTTP:
-
Случайные пробелы, часто в начале или в конце файлов, например:
<?php // Note the space before "<?php" ?>
Чтобы этого избежать, просто оставьте закрытие ?>
– это не обязательно.
- Значения байтов в начале файла php. Изучите ваши php-файлы с помощью шестнадцатеричного редактора, чтобы узнать, так ли это. Они должны начинаться с байтов
3F 3C
. Вы можете безопасно удалить BOMEF BB BF
с начала файлов. - Явный вывод, например вызовы для
echo
,printf
,readfile
,readfile
, код до<?
и т.п. - Предупреждение, выданное php, если установлено свойство
display_errors
php.ini. Вместо того, чтобы сбой при ошибке программиста, php молча фиксирует ошибку и выдает предупреждение. Хотя вы можете изменить конфигурацииdisplay_errors
или error_reporting , вам лучше исправить проблему.
Общими причинами являются доступ к неопределенным элементам массива (например,$_POST['input']
без использованияempty
илиisset
для проверки того, установлен ли вход) или с помощью неопределенной константы вместо строкового литерала (как в$_POST[input]
, обратите внимание на недостающие кавычки).
Включение буферизации вывода должно устранить проблему; весь вывод после вызова ob_start
буферизуется в памяти до тех пор, пока вы не освободите буфер, например, с ob_end_flush
.
Однако, в то время как буферизация вывода позволяет избежать проблем, вы должны действительно определить, почему ваше приложение выводит тело HTTP перед заголовком HTTP. Это будет похоже на телефонный звонок и обсуждение вашего дня и погоды, прежде чем сообщить вызывающему, что у него неправильный номер.
Я получил эту ошибку много раз раньше. И я уверен, что все программисты PHP по крайней мере однажды получили эту ошибку. Чтобы решить эту ошибку, вы можете решить использовать решение в соответствии с уровнем вашей проблемы:
Возможное решение 1:
Возможно, вы оставили пробелы до или после (в конце файла после?>), Т.е.
THERE SHOULD BE NO BLANK SPACES HERE <?php echo "your code here"; ?> DO CHECK FOR BLANK SPACES HERE AS WELL; THIS LINE (blank line) SHOULD NOT EXIST.
В большинстве случаев это должно решить вашу проблему. Проверьте все файлы, связанные с требуемым файлом.
Примечание. Иногда EDITOR (IDE), например gedit (стандартный Linux-редактор), добавляет одну пустую строку в файл save save. Этого не должно быть. Если вы используете linux. вы можете использовать редактор VI для удаления пробела / строк после?> в конце страницы.
Если это не ваше дело, тогда вы можете использовать ob_start для буферизации вывода, как показано ниже:
Возможное решение 2:
<?php ob_start(); // code ob_end_flush(); ?>
Вместо приведенной ниже строки
//header("Location:".ADMIN_URL."/index.php");
записывать
echo("<script>location.href = '".ADMIN_URL."/index.php?msg=$msg';</script>");
или
?><script><?php echo("location.href = '".ADMIN_URL."/index.php?msg=$msg';");?></script><?php
Это определенно решит вашу проблему. Я столкнулся с одной и той же проблемой, но решил решить эту проблему путем написания заголовка.
Вы делаете
printf ("Hi %s,</br />", $name);
перед установкой файлов cookie, что запрещено. Вы не можете отправлять какие-либо данные перед заголовками, даже пустую строку.
Именно из-за этой строки:
printf ("Hi %s,</br />", $name);
Вы не должны печатать / эхо ничего перед отправкой заголовков.
Простой совет: простое пространство (или невидимый специальный символ) в вашем скрипте, прямо перед самым первым <?php
, может вызвать это! Особенно, когда вы работаете в команде, а кто-то использует «слабую» IDE или перепутал файлы со странными текстовыми редакторами.
Я видел эти вещи;)
Другая неправильная практика может вызвать эту проблему, которая еще не указана.
См. Этот фрагмент кода:
<?php include('a_important_file.php'); //really really really bad practise header("Location:A location"); ?>
в<?php include('a_important_file.php'); //really really really bad practise header("Location:A location"); ?>
Все в порядке, не так ли?
Что, если «a_important_file.php»:
<?php //some php code //another line of php code //no line above is generating any output ?> ----------This is the end of the an_important_file-------------------
Это не будет работать? Почему? Потому что уже создана новая строка.
Теперь, хотя это не общий сценарий, что, если вы используете среду MVC, которая загружает большое количество файлов перед передачей данных на ваш контроллер? Это не необычный сценарий. Будьте готовы к этому.
Из PSR-2 2.2:
- Все файлы PHP ДОЛЖНЫ использовать окончание
Unix LF (linefeed) line ending
. - Все файлы PHP ДОЛЖНЫ заканчиваться
single blank line
. - Тег закрытия?> ДОЛЖЕН быть
omitted
из файлов, содержащихonly php
Поверьте мне, следующие стандарты могут сэкономить вам много часов из вашей жизни 🙂
использование
ob_start ();
на самом верху вашего скрипта и
ob_end_flush ();
в нижней части вашего скрипта. Этот wil включит буферизацию вывода, и ваши заголовки будут созданы после того, как страница будет буферизована.
ОБЩИЕ ПРОБЛЕМЫ:
====================
(скопированный ответ из: источник )
1) перед header(.......);
не должно быть никакого выхода (т.е. echo..
или HTML-кодов header(.......);
команда.
2) удалите любое пробел (или новую строку ) перед тегами <?php
и после ?>
.
3) ЗОЛОТОЕ ПРАВИЛО! – проверьте, поддерживает ли этот файл php (а также, если вы include
другие файлы) UTF8 без кодировки спецификации (а не только UTF-8 ). Это проблема во многих случаях (потому что кодированный файл UTF8 имеет что-то особенное в начале файла php, которое ваш текстовый редактор не показывает) !!!!!!!!!!!
4) После header(...);
вы должны использовать exit;
5) всегда используйте ссылку 301 или 302:
header("location: http://example.com", true, 301 ); exit;
6) Включите отчет об ошибках. И сообщите об ошибке.
7) Если ни одно из вышеизложенных не помогает, используйте перенаправление JAVSCRIPT (однако, сильно не рекомендуемый метод), может быть последним шансом в пользовательских случаях …:
echo "<script type='text/javascript'>window.top.location='http://website.com/';</script>"; exit;
Иногда, когда в процессе dev есть обе рабочие станции WIN и системы LINUX (хостинг), а в коде вы не видите никакого вывода перед соответствующей строкой, это может быть форматирование файла и отсутствие линии Unix LF (linefeed), заканчивающейся ,
Что мы обычно делаем, чтобы быстро исправить это, переименуйте файл, а в системе LINUX создайте новый файл вместо переименованного, а затем скопируйте его в него. Много раз это решает проблему, поскольку некоторые из файлов, которые были созданы в WIN, когда-то перемещенные на хостинг, вызывают эту проблему.
Это исправление является простым решением для сайтов, которыми мы управляем по FTP, и иногда может сэкономить нашим новым членам команды некоторое время.
Как правило, эта ошибка возникает, когда мы отправляем заголовок после эха или печати. Если эта ошибка возникает на определенной странице, убедитесь, что страница не повторяет ничего перед вызовом start_session()
.
Пример непредсказуемой ошибки:
<?php //a white-space before <?php also send for output and arise error session_start(); session_regenerate_id(); //your page content
Еще один пример:
<?php includes 'functions.php'; ?> <!-- This new line will also arise error --> <?php session_start(); session_regenerate_id(); //your page content
Вывод: не выводить символ перед вызовом функций session_start()
или header()
даже не в виде пробела или новой строки
Hello,
I have a problem on my site. When I go to the “edit post” I get Fatal eror and the following message:
`Fatal error: Uncaught Error: Argument number specifier must be greater than zero and less than 2147483647
in /home/prelepap/public_html/wp-admin/admin-header.php on line 62
Call stack:
sprintf()
wp-admin/admin-header.php:62
require_once()
wp-admin/edit-form-advanced.php:425
require()
wp-admin/post.php:206`
When I set PHP to version 7.4 I only get the following message in the top corner:
Warning: sprintf(): Argument number must be greater than zero in /home/prelepap/public_html/wp-admin/admin-header.php on line 62
but it allows me to make changes and update the post.
When I set PHP to version 8.0 or 8.1 then I get a fatal error when editing the post.
When I want to publish a new post, he allows me to do it normally, but when I go to that post I only get a message:
Forbidden
You don’t have permission to access this resource.
All older posts display normally, but does not allow editing.
I turned off all plugins and set a different theme, but the error is still the same.
At the following link you can see what is at: admin-header.php on line 62 CLICK HERE
The page I need help with: [log in to see the link]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 |
<?php if ( ! defined( 'ABSPATH' ) ) { exit; } if ( ! class_exists( 'FusionRedux_Filesystem' ) ) { class FusionRedux_Filesystem { /** * Instance of this class. * * @since 1.0.0 * @var object */ protected static $instance = null; protected static $direct = null; private $creds = array(); public $fs_object = null; public $parent = null; public function __construct() { $this->parent->admin_notices[] = array( 'type' => 'error', 'msg' => '<strong>' . __( 'File Permission Issues', 'Avada' ) . '</strong><br/>' . sprintf( __( 'We were unable to modify required files. Please check your permissions, or modify your wp-config.php file to contain your FTP login credentials as <a href="%s" target="_blank">outlined here</a>.', 'Avada' ), 'https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants' ), 'id' => 'fusionredux-wp-login', 'dismiss' => false, ); } /** * Return an instance of this class. * * @since 1.0.0 * @return object A single instance of this class. */ public static function get_instance( $parent = null ) { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) { self::$instance = new self; } if ( $parent !== null ) { self::$instance->parent = $parent; } return self::$instance; } public function ftp_form() { if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { echo '<div class="wrap"><div class="error"><p>'; echo '<strong>' . __( 'File Permission Issues', 'Avada' ) . '</strong><br/>' . sprintf( __( 'We were unable to modify required files. Please ensure that <code>%1s</code> has the proper read-write permissions, or modify your wp-config.php file to contain your FTP login credentials as <a href="%2s" target="_blank">outlined here</a>.', 'Avada' ), FusionRedux_Helpers::cleanFilePath( trailingslashit( WP_CONTENT_DIR ) ) . '/uploads/', 'https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants' ); echo '</p></div><h2></h2>' . '</div>'; } } function filesystem_init( $form_url, $method = '', $context = false, $fields = null ) { global $wp_filesystem; if ( ! empty( $this->creds ) ) { return true; } ob_start(); /* first attempt to get credentials */ if ( false === ( $this->creds = request_filesystem_credentials( $form_url, $method, false, $context ) ) ) { $this->creds = array(); $this->parent->ftp_form = ob_get_contents(); ob_end_clean(); /** * if we comes here - we don't have credentials * so the request for them is displaying * no need for further processing **/ return false; } /* now we got some credentials - try to use them*/ if ( ! WP_Filesystem( $this->creds ) ) { $this->creds = array(); /* incorrect connection data - ask for credentials again, now with error message */ request_filesystem_credentials( $form_url, '', true, $context ); $this->parent->ftp_form = ob_get_contents(); ob_end_clean(); return false; } return true; } public static function load_direct() { if ( self::$direct === null ) { require_once wp_normalize_path( ABSPATH . '/wp-admin/includes/class-wp-filesystem-base.php' ); require_once wp_normalize_path( ABSPATH . '/wp-admin/includes/class-wp-filesystem-direct.php' ); self::$direct = new WP_Filesystem_Direct( array() ); } } public function execute( $action, $file = '', $params = '' ) { if ( empty( $this->parent->args ) ) { return; } if ( ! empty ( $params ) ) { extract( $params ); } if ( ! is_dir( FusionReduxFramework::$_upload_dir ) ) { wp_mkdir_p( FusionReduxFramework::$_upload_dir ); } // Setup the filesystem with creds require_once wp_normalize_path( ABSPATH . '/wp-admin/includes/template.php' ); require_once wp_normalize_path( ABSPATH . '/wp-admin/includes/file.php' ); if ( $this->parent->args['menu_type'] == 'submenu' ) { $page_parent = $this->parent->args['page_parent']; $base = $page_parent . '?page=' . $this->parent->args['page_slug']; } else { $base = 'admin.php?page=' . $this->parent->args['page_slug']; } $url = wp_nonce_url( $base, 'fusionredux-options' ); $this->filesystem_init( $url, 'direct', dirname( $file ) ); return $this->do_action( $action, $file, $params ); } public function do_action( $action, $file = '', $params = '' ) { if ( ! empty ( $params ) ) { extract( $params ); } global $wp_filesystem; if ( ! isset( $params['chmod'] ) || ( isset( $params['chmod'] ) && empty( $params['chmod'] ) ) ) { if ( defined( 'FS_CHMOD_FILE' ) ) { $chmod = FS_CHMOD_FILE; } else { $chmod = 0644; } } $res = false; if ( ! isset( $recursive ) ) { $recursive = false; } //$target_dir = $wp_filesystem->find_folder( dirname( $file ) ); // Do unique stuff if ( $action == 'mkdir' ) { if ( defined( 'FS_CHMOD_DIR' ) ) { $chmod = FS_CHMOD_DIR; } else { $chmod = 0755; } $res = $wp_filesystem->mkdir( $file ); if ( ! $res ) { wp_mkdir_p( $file ); $res = file_exists( $file ); if ( ! $res ) { mkdir( $file, $chmod, true ); $res = file_exists( $file ); } } } elseif ( $action == 'rmdir' ) { $res = $wp_filesystem->rmdir( $file, $recursive ); } elseif ( $action == 'copy' && ! isset( $this->filesystem->killswitch ) ) { if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { $res = copy( $file, $destination ); if ( $res ) { chmod( $destination, $chmod ); } } else { $res = $wp_filesystem->copy( $file, $destination, $overwrite, $chmod ); } } elseif ( $action == 'move' && ! isset( $this->filesystem->killswitch ) ) { $res = $wp_filesystem->copy( $file, $destination, $overwrite ); } elseif ( $action == 'delete' ) { $res = $wp_filesystem->delete( $file, $recursive ); } elseif ( $action == 'rmdir' ) { $res = $wp_filesystem->rmdir( $file, $recursive ); } elseif ( $action == 'dirlist' ) { if ( ! isset( $include_hidden ) ) { $include_hidden = true; } $res = $wp_filesystem->dirlist( $file, $include_hidden, $recursive ); } elseif ( $action == 'put_contents' && ! isset( $this->filesystem->killswitch ) ) { // Write a string to a file if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { self::load_direct(); $res = self::$direct->put_contents( $file, $content, $chmod ); } else { $res = $wp_filesystem->put_contents( $file, $content, $chmod ); } } elseif ( $action == 'chown' ) { // Changes file owner if ( isset( $owner ) && ! empty( $owner ) ) { $res = $wp_filesystem->chmod( $file, $chmod, $recursive ); } } elseif ( $action == 'owner' ) { // Gets file owner $res = $wp_filesystem->owner( $file ); } elseif ( $action == 'chmod' ) { if ( ! isset( $params['chmod'] ) || ( isset( $params['chmod'] ) && empty( $params['chmod'] ) ) ) { $chmod = false; } $res = $wp_filesystem->chmod( $file, $chmod, $recursive ); } elseif ( $action == 'get_contents' ) { // Reads entire file into a string if ( isset( $this->parent->ftp_form ) && ! empty( $this->parent->ftp_form ) ) { self::load_direct(); $res = self::$direct->get_contents( $file ); } else { $res = $wp_filesystem->get_contents( $file ); } } elseif ( $action == 'get_contents_array' ) { // Reads entire file into an array $res = $wp_filesystem->get_contents_array( $file ); } elseif ( $action == 'object' ) { $res = $wp_filesystem; } elseif ( $action == 'unzip' ) { $unzipfile = unzip_file( $file, $destination ); if ( $unzipfile ) { $res = true; } } if ( ! $res ) { if ($action == 'dirlist') { if (empty($res) || $res == false || $res == '' ) { return; } if (is_array($res) && empty($res)) { return; } if (!is_array($res)) { if (count(glob("$file*")) == 0) { return; } } } $this->killswitch = true; $this->parent->admin_notices[] = array( 'type' => 'error', 'msg' => '<strong>' . __( 'File Permission Issues', 'Avada' ) . '</strong><br/>' . sprintf( __( 'We were unable to modify required files. Please ensure that <code>%1s</code> has the proper read-write permissions, or modify your wp-config.php file to contain your FTP login credentials as <a href="%2s" target="_blank">outlined here</a>.', 'Avada' ), FusionRedux_Helpers::cleanFilePath( trailingslashit( WP_CONTENT_DIR ) ) . '/uploads/', 'https://codex.wordpress.org/Editing_wp-config.php#WordPress_Upgrade_Constants' ), 'id' => 'fusionredux-wp-login', 'dismiss' => false, ); //add_action( "fusionredux/page/{$this->parent->args['opt_name']}/form/before", array( // $this, // 'ftp_form' //) ); } return $res; } } FusionRedux_Filesystem::get_instance(); } |
I did some research to solve this problem, but seems like not working for me, I have checked all the spacing, replaced original functions.php, double check wp-config.php but still not working for me. Im using wordpress 5.4 version, after I installed Elementor Pro and insert WP-Filebase shortcode, the error message showing up.
Warning: Cannot modify header information — headers already sent by (output started at /home/customer/www/xxx.xxx/public_html/xxx/wp-includes/class.wp-scripts.php:405) in /home/customer/www/xxx.xxx/public_html/xxx/wp-admin/admin-header.php on line 9>
Here is the class.wp-scripts.php on line 405
* Filters the HTML script tag of an enqueued script.
*
* @since 4.1.0
*
* @param string $tag The `<script>` tag for the enqueued script.
* @param string $handle The script's registered handle.
* @param string $src The script's source URL.
*/
$tag = apply_filters( 'script_loader_tag', $tag, $handle, $src );
if ( $this->do_concat ) {
$this->print_html .= $tag;
} else {
echo $tag;
}
return true;
}
Here is the admin-header.php on line 9
header( 'Content-Type: ' . get_option( 'html_type' ) . '; charset=' . get_option( 'blog_charset' ) );
if ( ! defined( 'WP_ADMIN' ) ) {
require_once __DIR__ . '/admin.php';
}
wp-admin/menu-header.php:166 — Использование уровней пользователей в плагинах и темах считается устаревшим. Используйте роли и возможности.
require_once(‘wp-admin/admin-header.php’), require(‘wp-admin/menu-header.php’), _wp_menu_output, current_user_can
-
Вопрос заданболее трёх лет назад
-
190 просмотров