gpt4 book ai didi

php - 从命令行运行脚本时的 open_basedir 限制

转载 作者:可可西里 更新时间:2023-11-01 01:08:09 24 4
gpt4 key购买 nike

我正在学习如何根据最近项目的要求使用命令行。我有一个将在 cronjob 期间运行的脚本,我正在使用 Putty 从命令行点击它来测试它。

我的脚本在浏览器中运行良好,但在命令行中尝试包含文件甚至检查文件是否存在时出现权限错误。

这只会在命令行中发生。这是控制台中的内容(我确定正在执行正确的脚本,现在它所做的只是检查是否存在所需的文件):

这是终端中执行命令的行:

secure:~/www/private/cron$ php -f ./update.php

这是输出:

Warning: file_exists(): open_basedir restriction in effect.File(/usr/local/apache/htdocs/example.com/private/modules/real_estate/config/condos.php)is not within the allowed path(s):(.:/tmp/:/var/tmp/:/usr/local/apache/htdocs/example.com/images/:/home/example/www/images/)in /usr/local/apache/htdocs/example.com/private/cron/update.phpon line 43

没有在浏览器中运行脚本时遇到此错误,这让我感到困惑 - 但正如我所提到的,我是使用命令行的新手。我已经尝试了所有我能想到的方法来引用 update.php 中的文件,并尝试更改包含路径,但似乎没有任何效果。要么我收到权限错误,要么找不到文件。

有谁知道为什么在浏览器中执行脚本与在命令行中执行脚本之间存在差异,以及我可以采取什么措施来解决此错误?我很乐意根据要求提供更多信息。


更多信息:

这是我从 php --ini 得到的 CLI 输出:

Configuration File (php.ini) Path: /usr/local/lib
Loaded Configuration File: /usr/local/Zend/etc/php.ini
Scan for additional .ini files in: (none)
Additional .ini files parsed: (none)

这是 phpinfo() 中的 Loaded Configuration File 条目,来自浏览器:

/usr/local/Zend/etc/php.ini

所以 Loaded Configuration File 在两个环境中看起来是一样的。

最佳答案

您可能希望为 CLI 和 Apache 实例运行两个不同的 php.ini 文件。

一种方法是将当前的 php.ini 文件复制到另一个目录 - 比如说“/usr/local/Zend/etc/php_cli/php.ini”或更方便的目录。然后,更改“/usr/local/Zend/etc/php_cli/php.ini”中的设置以更好地适应命令行环境(稍微扩展一下 open_basedir,日志文件路径,and other CLI-specific settings)。然后,在执行 CLI 脚本时,包括 -c "/usr/local/Zend/etc/php_cli" 开关以让 CLI 引用 that ini 文件。

关于php - 从命令行运行脚本时的 open_basedir 限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6683283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com