У меня есть файловая структура на 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`
Если вы посмотрите на постоянный PHP PATH_SEPARATOR , вы увидите, что это «:» для вас.
Если вы разделите свою строку «.: / Usr / share / pear: / usr / share / php», используя этот символ, вы получите 3 части
Любые попытки включить () / require () вещи будут выглядеть в этих каталогах в этом порядке.
Он покажет вам, что в сообщении об ошибке вы узнаете, где он НЕ может найти файл, который вы пытаетесь потребовать ()
Для вашего первого требуют, если это будет включено из вашего index.php, тогда вам не нужен материал dir, просто выполните:
require_once ( 'db/config.php');
как упоминалось Uberfuzzy [настоящая причина проблемы]
Если вы посмотрите на постоянную PHP [PATH_SEPARATOR] [1], вы увидите, что это «:» для вас.
Если вы разделите свою строку «.: / Usr / share / pear: / usr / share / php», используя этот символ, вы получите 3 части
Любые попытки включить () / require () вещи будут выглядеть в этих каталогах в этом порядке.
Он покажет вам, что в сообщении об ошибке вы узнаете, где он НЕ может найти файл, который вы пытаетесь потребовать ()
Это было причиной ошибки.
Теперь приступим к решению
php --ini
(в моем случае: /etc/php5/cli/php.ini
) include_path
в vi, используя esc
затем нажмите /include_path
затем enter
include_path = ".:/usr/share/php:/var/www/<directory>/"
sudo service apache2 restart
Это оно. Надеюсь, поможет.
На самом деле, решение заключается в том, чтобы открыть файл 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
У меня была аналогичная проблема. Просто чтобы помочь кому-то с той же проблемой:
Моя ошибка была атрибутом файла пользователя для файлов в / var / www. После их изменения к пользовательскому «www-data» проблема исчезла.
Это просто каталоги, показывающие, где PHP ищет ваш файл. Убедитесь, что cron1.php
существует там, где вы думаете. И убедитесь, что вы знаете, где dirname(__FILE__)
и $_SERVER['DOCUMENT_ROOT']
указывают, где вы ожидаете.
Это значение можно настроить в файле php.ini.
У меня была такая же ошибка, включая файл из корня моего проекта в codeigniter
Я использовал это в common.php
моего проекта.
<?php include_once base_url().'csrf-magic-master/csrf-magic.php'; ?>
я изменил его на
<?php include_once ('csrf-magic-master/csrf-magic.php'); ?>
Теперь работа хорошая.