поэтому на моем сервере Ubuntu 16.04 у меня есть несколько файлов .php в моем каталоге /var/www/html/, которые я делаю обычными php-вещами, такими как поиск данных, вход пользователя в систему... и т. д. Я хотел реализовать проверку почты сервис, в котором я хотел использовать smtp-сервис gmail, поэтому я установил почту через грушу с помощью следующей команды:
pear install --alldeps Mail
Выполнив шаги в этот сайт, я перезапустил apache2, и теперь мой php require_once не работает. Я попробовал include_path, который тоже не сработал.
Я удалил почту с помощью pear uninstall mail, удалил php и переустановил его, надеясь, что он вернет файлы, но не повезло, кто-нибудь знает, что произошло и как я могу это исправить?
пример кода: require_once 'DbOperation.php';
Приведенный выше код работал, и я хочу, чтобы он работал, поскольку он является ключом ко всему моему php API, пожалуйста, не предлагайте обходной путь. Любая помощь приветствуется.
это не было include_path раньше, это было require_once, я только что попробовал include_path, чтобы проверить его после того, как он начал давать сбой
@Dave, и сейчас ничего, потому что он не работает ... поэтому я оставил его как require_once, надеясь, что смогу это исправить и оставить файлы php как есть
Путь включения по умолчанию в примерах ini-файлов включает .: для Linux. Находится ли код, который использует require_once в каталоге /var/www/html/, и DbOperation.php тоже в этом каталоге?
@Dave Да, все файлы .php в каталоге /var/www/html, раньше он работал, вызывая файл как есть без разделителей каталогов, пример кода, который я предоставил в своем вопросе, был действителен и раньше работал как очарование.
@Dave Дэйв может при установке почты изменить конфигурацию php таким образом, что функция не будет работать?
Не то чтобы я когда-либо слышал. Какую именно ошибку вы получаете?
Я не знаю, я повторяю случайное предложение до и после функции require_once, при запуске работает только первое эхо, оно не достигает второго эха, как фатальная ошибка, есть ли способ распечатать свою ошибку ?
Убедитесь, что все отчеты об ошибках включены. ini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);. Может ли DbOperation.php по какой-то причине не работать сейчас?
@Dave, о, вау, это на самом деле не удалось из-за отсутствия ")"... это ошибка новичка :'(, на самом деле ты спаситель жизни, пожалуйста, опубликуй свой ответ официально, чтобы я мог отметить как решенный, спасибо много
@Dave Дэйв, мне действительно сейчас стыдно, прости меня xD
Это было в требуемом коде?
@Dave, это было в DbOperation.php, как вы сказали, это было ошибкой, но я не понимаю, эта синтаксическая ошибка была небольшой строкой в функции (внутри DbOperation.php), которая никогда не вызывалась исходным файлом , он тоже его обнаруживает?
Синтаксические ошибки никогда не пройдут мимо синтаксического анализатора. Неважно, находится ли он в функции. Вы, вероятно, захотите привыкнуть использовать опцию -l PHP для быстрой проверки lint всякий раз, когда вы что-то обновляете. В редакторе я использую эту последовательность клавиш, которую я использую часто, даже не задумываясь об этом.
@Dave Дэйв, эй, так как ты эксперт по php, я на удаленном сервере, и писать файлы php немного сложно, когда я постоянно загружаю обновленный файл .php через ssh, есть ли текстовый редактор, который я могу использовать, чтобы подключиться к моему серверу и обновлять материал в режиме реального времени?
Короткий ответ, не делайте этого. Устанавливайте все необходимое локально и разрабатывайте локально, развертывая на сервере только тогда, когда он протестирован и работает правильно. Для Linux стек LAMP дает вам все необходимое. Если вы действительно хотите узнать, как все это работает вместе, установите каждую часть вручную (PHP, Apache и MySQL или MariaDB).
Если ответ решил вашу проблему, рассмотрите возможность принятия ответа. Вот как, затем вернитесь сюда и сделайте то же самое с галочкой, пока она не станет зеленой. Это информирует сообщество, решение было найдено. В противном случае другие могут подумать, что вопрос все еще открыт, и могут захотеть опубликовать (больше) ответов. Вы будете зарабатывать очки, а другим будет предложено помочь вам. Добро пожаловать в Стек!






Ответ Дейва решил мою проблему, проверив имя файла в require_once('filename'), в котором отсутствовал ")"... ошибка новичка, я знаю.
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
поместите это в свой файл php, чтобы отобразить ошибки, чтобы узнать, в чем ваша проблема. Спасибо, Дэйв!
Ничто из того, что вы пробовали, не должно вызывать внезапной остановки работы require или require_once. Убедитесь, что у вас включены все отчеты об ошибках:
ini_set('display_errors',1);
ini_set('display_startup_errors',1);
error_reporting(E_ALL);
С включенным отчетом об ошибках вы можете обнаружить проблему с чем-то еще (например, с требуемым кодом).
Что было
include_pathдо того, как вы установилиMail? Что теперь?