У меня есть файловая структура на EC2 как: но перед проблемой некоторых ссылок на файл.
index.php
-db
-config.php
-cron
-cron1.php
Я попробовал ссылку на файл как:
'require_once (dirname(__FILE__).'/db/config.php');'
'require_once (($_SERVER['DOCUMENT_ROOT']).'/db/config.php');'
но cron не работает. Это дает ошибку в почте, поскольку
'PHP Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3
Warning: require_once(/db/config.php): failed to open stream: No such file or directory in /var/www/html/cron/cron1.php on line 3
PHP Fatal error: require_once(): Failed opening required '/db/config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/cron/cron1.php on line 3
Fatal error: require_once(): Failed opening required '/db/config.php' (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/html/cron/cron1.php on line 3'
Ответ 1
Если вы посмотрите на постоянный PHP PATH_SEPARATOR, вы увидите, что это ":" для вас.
Если вы разделите свою строку ".: /Usr/share/pear: /usr/share/php", используя этот символ, вы получите 3 части
- , (это означает текущий каталог, в котором находится ваш код)
- /USR/доли/груша
- /USR/доли/фот
Любые попытки включить()/require() вещи будут выглядеть в этих каталогах в этом порядке.
Он покажет вам, что в сообщении об ошибке вы узнаете, где он НЕ может найти файл, который вы пытаетесь потребовать()
Для вашего первого требуют, если это будет включено из вашего index.php, тогда вам не нужен материал dir, просто выполните:
require_once ( 'db/config.php');
Ответ 2
Решение проблемы
как упоминалось Uberfuzzy [настоящая причина проблемы]
Если вы посмотрите на постоянную PHP [PATH_SEPARATOR] [1], вы увидите, что это ":" для вас.
Если вы разделите свою строку ".: /Usr/share/pear: /usr/share/php", используя этот символ, вы получите 3 части
- , (это означает текущий каталог, в котором находится ваш код)
- /USR/доли/груша
- /USR/доли/фот
Любые попытки включить()/require() вещи будут выглядеть в этих каталогах в этом порядке.
Он покажет вам, что в сообщении об ошибке вы узнаете, где он НЕ может найти файл, который вы пытаетесь потребовать()
Это было причиной ошибки.
Теперь приступим к решению
- Шаг 1. Найдите файл php.ini с помощью команды
php --ini
(в моем случае: /etc/php5/cli/php.ini
) - Шаг 2: найдите
include_path
в vi, используя esc
затем нажмите /include_path
затем enter
- Шаг 3: раскомментируйте эту строку, если она прокомментирована и включает ваш каталог сервера, ваш путь должен выглядеть так:
include_path = ".: /usr/share/php: /var/www/<directory>/"
- Шаг 4: Перезапустите apache
sudo service apache2 restart
Это оно. Надеюсь, поможет.
Ответ 3
На самом деле, решение заключается в том, чтобы открыть файл php.ini, отредактировать строку include_path и либо полностью изменить его на
include_path='.:/usr/share/php:/usr/share/pear'
или добавьте
'.:/usr/share/php:/usr/share/pear'
к текущему значению include_path.
Это также объясняется в: http://pear.php.net/manual/en/installation.checking.php#installation.checking.cli.phpdir
Ответ 4
У меня была аналогичная проблема. Просто чтобы помочь кому-то с той же проблемой:
Моя ошибка была атрибутом файла пользователя для файлов в /var/www. После их изменения к пользовательскому "www-data" проблема исчезла.
Ответ 5
Это просто каталоги, показывающие, где PHP ищет ваш файл. Убедитесь, что cron1.php
существует там, где вы думаете. И убедитесь, что вы знаете, где dirname(__FILE__)
и $_SERVER['DOCUMENT_ROOT']
указывают, где вы ожидаете.
Это значение можно настроить в файле php.ini.
Ответ 6
У меня была такая же ошибка, включая файл из корня моего проекта в codeigniter
Я использовал это в common.php
моего проекта.
<?php include_once base_url().'csrf-magic-master/csrf-magic.php'; ?>
я изменил его на
<?php include_once ('csrf-magic-master/csrf-magic.php'); ?>
Теперь работа хорошая.