在安装Composer软件包后,我试图包括自动加载器并运行脚本:
require __DIR__ . 'vendor/autoload.php';
这时我收到以下消息:
警告:require():open_basedir限制有效。文件(/home/admin/domains/example.com/private_html/map/mt940/_example/vendor/autoload.php)不在允许的路径内:(/ home / admin /:/ tmp:/ var /在/ home / admin / domains中的tmp:/ opt / alt / php72 / usr / share / pear /:/ dev / urandom:/ usr / local / lib / php /:/ usr / local / php72 / lib / php /) /example.com/private_html/map/mt940/_example/example1.php,第6行
警告:require(/home/admin/domains/example.com/private_html/map/mt940/vendor/autoload.php):无法打开流:/ home / admin / domains / example中没有此类文件或目录.com / private_html / map / mt940 / _example / example1.php,第6行
致命错误:require():无法打开所需的'/home/admin/domains/example.com/private_html/map/mt940/vendor/autoload.php'(include_path ='。:/ usr / local / lib / php')在第6行的/home/admin/domains/example.com/private_html/map/mt940/_example/example1.php中
我错过了一步吗?为什么会收到此错误消息?
更新1:
在禁用open_basedir之后,我仍然收到以下错误消息:
警告:require(/home/admin/domains/example.com/private_html/map/mt940/vendor/autoload.php):无法打开流:/ home / admin / domains / example中没有此类文件或目录.com / private_html / map / mt940 / _example / example1.php,第6行
致命错误:require():无法打开所需的'/home/admin/domains/example.com/private_html/map/mt940/vendor/autoload.php'(include_path ='。:/ usr / local / lib / php')在第6行的/home/admin/domains/example.com/private_html/map/mt940/_example/example1.php中
答案 0 :(得分:1)
您的问题缺少重要信息,这是您项目的目录结构。
我们可以尝试从您的错误消息中猜测出来。
目录/home/admin/domains/example.com/private_html/map/mt940/_example/
应包含:
composer.json
composer.lock
vendor/
example1.php
...
如果正确,则当前的require __DIR__ . 'vendor/autoload.php';
应该有效。
如果文件require dirname(__DIR__) . 'vendor/autoload.php';
位于更深的目录中,则先前的示例example1.php
将起作用。例如
composer.json
composer.lock
vendor/
something/example1.php // <-- notice it's on deeper level
...
答案 1 :(得分:0)
您确定PHP使用的(Linux?)用户可以将文件读入/ home / admin吗?
<?= get_current_user() ?>
附加到主体中来进行测试
脚本(example1.php)。然后在浏览器中调用它(通过
Apache / Nginx / etc)。 require __DIR__ . 'test.php';
,则应该得到相同的错误。为/home/admin/domains
配置您的权限,或将源移至/var/www/
之类的目录(并检查权限)
答案 2 :(得分:0)
从您的错误消息看来,这是一个综合错误。您搜索的文件路径错误,并且没有某些文件的读/写访问权限。您需要确保使用正确的路径,并以 Apache 用户的身份访问文件。
这是生成项目的常见问题。有时文件和文件夹没有适当的系统权限。浏览文件并检查恶意权限。您想同时拥有对大多数文件的读/写权限。
答案 3 :(得分:0)
include
和require
的问题:### 我知道这听起来很愚蠢,但是您不想知道我在所需路径中犯错误的频率有多大
Linux中的权限可能很少。确保正确设置了所有内容。
Apache,nginx和其他Web服务器都有自己的用户来执行Web服务器。当然,这取决于您的安装和配置。确保您的网络服务器由正确的用户执行,该用户具有正确的权限。
include_path
是correct 如果某个包裹弄乱了您的include path
,请确保对其进行纠正。